首页 > 解决方案 > 使用 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)

标签: javascriptarraysecmascript-6

解决方案


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

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);


推荐阅读