Yan*_*sky 8 javascript sorting map
是否可以将数组映射到新数组并同时对其进行排序而无需迭代两次(一次用于第一个数组上的映射,一次用于第二个数组上的排序)?在使用这样的 map 方法时,我一直在尝试使用匿名函数对其进行排序:
var arr=[4,2,20,44,6];
var arr2=arr.map(function(item, index, array){
if(index==array.length-1 || item==array[index+1]){
return item;
}
else if((item-array[index+1])<0){
return item;
}
else if((item-array[index+1])>0){
return array[index+1];
}
});
console.log(arr2);
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用。我在尝试实现这一点的方式上偏离了基础,还是我的代码有问题?
Mat*_*ley 10
排序本身通常需要不止一次迭代。对于平均情况,几乎可以肯定是 O(n log n)(ECMAScript 未指定算法,但这是您可以使用比较排序做的最好的结果),因此同时执行这两个操作没有多大意义。
您可以将它们链接到一个表达式中,因为sort
返回数组本身:
function order(a, b) {
return a < b ? -1 : (a > b ? 1 : 0);
}
var arr2 = arr.map(function(item) { ... }).sort(order);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13260 次 |
最近记录: |