所以我想对一个数组使用自定义排序,我得到的数组总是以不同的顺序: [{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]',现在我没有想法了。
3 回答
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
眼眸繁星
TA贡献1873条经验 获得超9个赞
你走得太远了。
仅使用数组进行排序就足够了,依靠其中项目的索引。
const data = [
{ code: 'O' },
{ code: 'A' },
{ code: 'I' },
];
const order = ['A', 'O', 'I'];
const sorted = data.sort((a, b) => order.indexOf(a.code) - order.indexOf(b.code));
console.log(sorted);
![?](http://img1.sycdn.imooc.com/54584cde0001d19202200220-100-100.jpg)
万千封印
TA贡献1891条经验 获得超3个赞
您的代码不会为我引发运行时错误,但会引发构建错误 re: 类型声明。AnArray
需要一个类型,即使它是any
. 将您的函数声明更改为
export function someSort(arrayToSort): Array<any> {
为我修复了它(如:构建、运行并产生预期结果)。
添加回答
举报
0/150
提交
取消