【问题标题】: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"] ;
  • 随机就可以了。但是物品有排序号吗?

标签: javascript arrays sorting typescript


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-19
      • 2022-11-18
      • 2015-03-04
      • 1970-01-01
      相关资源
      最近更新 更多