问题描述
我有以下数组:
const arr = [-1,9,2,5,6,-1,8,4];
我想对它进行部分排序,而不更改-1
的位置。输出应为:
expected = [-1,4]
。如何在JavaScript中实现这一目标。我将感谢蛮力和最佳(时间)解决方案...
解决方法
arr = [-1,9,2,5,6,-1,8,4];
sorted=arr.reduce((acc,cv)=>{
if(cv==-1) {
acc.push([-1]);
acc.push([]);
}
else {
acc[acc.length-1].push(cv);
}
return acc;
},[[]])
.map(item=>item.sort((a,b)=>a-b))
.reduce((acc,cv)=>acc.concat(cv),[])
console.log(JSON.stringify(sorted));