使用随机排序顺序的打字稿数组排序

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)=&gt; 的第一个实例,并在最后添加);【参考方案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);

【讨论】:

以上是关于使用随机排序顺序的打字稿数组排序的主要内容,如果未能解决你的问题,请参考以下文章

对对象数组进行排序角打字稿

sort排序以及随机排序

给定一个随机顺序的整数数组,您必须找到最小交换次数才能将其转换为循环排序数组

javascript 按随机顺序对数组进行排序

如何使用相同的随机排序对两个数组进行排序

mpi生成随机数组并进行排序