使用随机排序顺序的打字稿数组排序
Posted
技术标签:
【中文标题】使用随机排序顺序的打字稿数组排序【英文标题】:typescript array sorting with random sort order 【发布时间】:2017-12-24 07:47:51 【问题描述】:我想根据排序顺序对数组进行排序。
public array1: Array<string> = [];
array.push(some string values); //E.g dog,apple,man
我有一个类似的排序顺序
狗 = 1 苹果 = 3 人 = 2所以我想像狗、人、苹果一样对这个数组进行排序。
如何在打字稿中做到这一点。
【问题讨论】:
你能告诉我你的完整数组的值吗?那么只有我们可以对订单进行排序。\ 数组值是随机的。 只是为了让我明白这一点,你想随机打乱一个列表吗? alphas = ["dog","apple","man"] ; 随机就可以了。但是物品有排序号吗? 【参考方案1】:如果您将订单放在地图(对象)中,您可以这样做。
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;
);
您已经增强了您的问题,然后这个答案不再相关(以及 cmets 中提到的固定代码)。
【讨论】:
如果我声明一个数组,如 public arrayName: Array = [];然后它的抛出错误 data.sort(d1,d2)=>(d1, d2) => 是的,代码有错别字。删除文本d1,d2)=>
的第一个实例,并在最后添加);
。【参考方案3】:
这也可以。 Source.
randomizeArray(a, b, c, d) // array, placeholder, placeholder, placeholder
c = a.length; while (c) b = Math.random() * c-- | 0, d = a[c], a[c] = a[b], a[b] = d
你可以这样调用这个函数,其中data
是一个数组[]
this.randomizeArray(data, null, null, null);
【讨论】:
以上是关于使用随机排序顺序的打字稿数组排序的主要内容,如果未能解决你的问题,请参考以下文章