【发布时间】:2020-02-05 18:40:01
【问题描述】:
所以我想对一个总是以不同顺序排列的数组使用自定义排序:[{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]' 现在我没有想法了。
【问题讨论】:
-
我允许自己更改标签以使其适应您的问题(我知道您使用 Angular,但问题与 Angular 无关,因为它不涉及任何 Angular 功能)。如果您觉得这不公平,请告诉我。
-
那么您的问题是阵列被冻结了吗?您可能想改用
arrayToSort.slice().sort(...),因此您正在对数组的副本而不是数组本身进行排序。请注意,提供minimal reproducible example 会有所帮助,如How to Ask 的指导方针中所述,这是一个好问题。祝你好运!
标签: javascript arrays typescript sorting