Typescript 中的比较器,用于对数组进行自定义排序

所以我想对一个数组使用自定义排序,我得到的数组总是以不同的顺序: [{code: 'A'},{code: 'O'},{code: 'I'}],  [{code: 'O'},{code: 'A'},{code: 'I'}], ...


我要按 [{code: 'A'},{code: 'O'},{code: 'I'}]顺序。


export function someSort(arrayToSort): Array {

  if (!arrayToSort || arrayToSort.length < 1) {

    return [];

  }

  const sorted = new Map();

  const sorting = ['A', 'O', 'I'];


  for (let i = 0; i < sorting.length; ++i) {

    sorted.set(sorting[i], i);

  }

  return arrayToSort.sort((a, b) => sorted.get(a.code) - sorted.get(b.code));

}

我尝试了这个,我将我想要的排序添加到地图中,键是“A”,值是一个数字,所以它是可排序的,但我收到一个错误core.js:15724 ERROR TypeError: Cannot assign to read only property '0' of object '[object Array]',现在我没有想法了。


MMMHUHU
浏览 329回答 3
3回答

眼眸繁星

你走得太远了。仅使用数组进行排序就足够了,依靠其中项目的索引。const data = [&nbsp; { code: 'O' },&nbsp; { code: 'A' },&nbsp; { code: 'I' },];const order = ['A', 'O', 'I'];const sorted = data.sort((a, b) => order.indexOf(a.code) - order.indexOf(b.code));console.log(sorted);

HUH函数

该数组来自 redux 存储并且它是不可变的,所以我slice()在调用之前解决了它sort()。

万千封印

您的代码不会为我引发运行时错误,但会引发构建错误 re: 类型声明。AnArray需要一个类型,即使它是any.&nbsp;将您的函数声明更改为export&nbsp;function&nbsp;someSort(arrayToSort):&nbsp;Array<any>&nbsp;{为我修复了它(如:构建、运行并产生预期结果)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript