使用 Javascript/ES 以交替的负数和正数排列数组



我正在尝试排列一个数组

[1,4,7,6,8,-1,-4,-5,8]

喜欢

[-1,1,-4,4,-5,7,6,8,8]

我如何使用 JavaScript 来做到这一点?我想使用map函数制作正数数组和负数数组,并将它们一一合并。但是我在合并它们时遇到了麻烦。

let arr = [1,4,7,6,8,-1,-4,-5,8];
let positiveArr = arr.map((a) => a >= 0);
let negativeArr = arr.map((a) => a < 0);
final_arr = negativeArr.map(function(v,i) { return [v, positiveArr[i]]; });
console.log(final_arr)

您可以将所有正数过滤到数组中,将所有负数过滤到数组中。然后,交替将负数和正数推入新数组。

const arr = [-1,1,-4,4,-5,7,6,8,8];
const positive = arr.filter(x=>x>=0);
const negative = arr.filter(x=>x<0);
const res = [];
for(let i = 0, j = 0; i < positive.length || j < negative.length; i++, j++){
if(j < negative.length) res.push(negative[i]);
if(i < positive.length) res.push(positive[i]);
}
console.log(res);

我希望这有帮助

const arr = [1,4,7,6,8,-1,-4,-5,8]
arr.sort((a, b) => Math.abs(b) - Math.abs(a)).reverse()
console.log(arr)

最新更新