【发布时间】:2017-06-26 07:45:25
【问题描述】:
我有两个数组:
const originalArray = ['a', 'n', 'u', 'b', 'd', 'z'];
const sortOrder = ['n', 'z'];
所以我想输出为['n', 'z', 'a', 'u', 'b', 'd'];
基本上 originalArray 的顺序是按照 secondArray 的顺序排序的。
我可以根据第二个数组从原始数组中弹出元素,然后可以将它们附加到前面,这将为我提供所需的解决方案,但不确定这是否有效或者是否有更好的方法来使用array.sort(fxn);
const originalArray = ['a', 'n', 'u', 'b', 'd', 'z'];
const sortOrder = ['n', 'z'];
const reverseOrder = sortOrder.reverse();
for (let elem of reverseOrder) {
const indexofelem = originalArray.indexOf(elem);
originalArray.unshift(originalArray.splice(indexofelem, 1)[0]);
}
console.log(originalArray);
【问题讨论】:
-
sortOrder中项目的顺序 not 是否相关?为array.sort编写一个比较函数非常简单,它只是将sortOrder中的项目优先级放在前面;保证其他项目的稳定更复杂。 -
是的,保持不在sortOrder中的项目的顺序是相关的。
标签: javascript arrays sorting ecmascript-6