2017-07-19 100 views
1

我想基于排序顺序对数组进行排序。使用随机排序顺序打印字体数组排序

public array1: Array<string> = []; 
array.push(some string values); //E.g dog,apple,man 

我有一个排序顺序像

  • 狗= 1
  • 苹果= 3
  • 人= 2

所以我想解决这阵像狗,男人,苹果。

如何在打字稿中做到这一点。

+0

你能告诉我你的数组值吗?那么只有我们可以对订单进行排序。\ –

+0

数组值是随机的。 – Jane

+0

只是这样我可以得到这个直线,你想随机洗牌清单? – toskv

回答

3

如果你在地图(对象)中有你的订单,你可以这样做。

let list = ['dog', 'cat','apple']; 
let sortOrder = { 
    dog: 1, 
    cat: 3, 
    apple: 2 
} 

list.sort((a, b) => sortOrder[a] - sortOrder[b]); 

你可以看到一个工作操场例子here

2

我想你使用TypeScript(在你的问题标记)。

let data = [ 
    {value:"dog", key:1}, 
    {value:"apple", key:3}, 
    {value:"man", key:2}, 
]; 

data.sort((d1, d2) => { 
    if (d1.key > d2.key) return 1; 
    if (d1.key < d2.key) return -1; 
    return 0; 
}); 

您已经增进了你的问题,那么这个答案是不相关的了(和注释中提到的固定代码)。

+0

如果我声明array public arrayName:Array <{key:string,value:string}> = [];那么它的投掷错误data.sort(d1,d2)=>(d1,d2)=> {} – Jane

+1

是的,代码有错别字。删除文本'd1,d2)=>'的第一个实例并添加');'到最后。 – jcalz