此代码的目标是对数组[1,2,3,4,5]进行排序,使其看起来像[5,3,1,2,4]。我还希望它对其他人发送给我的数组进行排序,例如,它应与[-10,-1,-4]一起使用,作为[-1,-10,-4]。应当使用以下规则对数组进行排序:
到目前为止,这是我的主意:
let values = [1,2,3];
let storage = values.sort((a, b) => a - b);
let result = storage[0];
for( let i = 1; i <= (values.length/2); i+=2 ){
result.unshift (storage[i]);
result.push (storage[i+1]);
}
return result);
但是我无法使其工作,我迷失了目前可以改变的地方。
答案 0 :(得分:1)
您需要将result
设置为数组:
let values = [1,2,3];
let storage = values.sort((a, b) => a - b);
let result = [storage[0]]; // make the result an array
for( let i = 1; i <= (values.length/2); i+=2 ){
result.unshift (storage[i]);
result.push (storage[i+1]);
}
console.log(result);
答案 1 :(得分:1)
您可以进行蝴蝶排序,对奇数降序和偶数升序进行排序。
var array = [1, 2, 3, 4, 5];
array.sort((a, b) => b % 2 - a % 2 || (a % 2 ? b - a : a - b));
console.log(array);
答案 2 :(得分:1)
这是我的解决方法
function customSort(inputArray){
var initialSort = inputArray.sort()
var finalSorted = []
finalSorted.push(initialSort[0])
//console.log(finalSorted)
for(i=1;i<initialSort.length;i++){
if(i%2 === 0){
finalSorted.unshift(initialSort[i])
}
else{
finalSorted.push(initialSort[i])
}
}
console.log(finalSorted)
}
var inputArray = [1,2,3,4,5]
customSort(inputArray)