给定一个正整数和负整数数组,重新排列它,使得一端为正整数,另一端为负整数,但保留原始数组中的出现顺序。
例如:arr = [2,-12,4,46,-20,-1] 答案应该是:arr = [-12,-20,-1,2,4,46]
如何在JavaScript中以这种方式排列数组?
感谢。
答案 0 :(得分:1)
您可以使用reduce()
创建一个正值和负值的对象,然后将这些值连接到一个数组中。
var arr = [2, -12, 4, 46, -20, -1];
var o = arr.reduce(function(r, e) {
return e < 0 ? r.n.push(e) : r.p.push(e), r
}, {p: [], n: []})
var result = [...o.n, ...o.p]
console.log(result)
&#13;
答案 1 :(得分:0)
您可以使用Array#reduce
功能获得所需的结果。如果迭代元素小于或等于0
,则将其添加到结果数组的开头。如果不是 - 将它推到最后。
var arr = [2, -12, 4, 46, -20, -1],
res = arr.reduce(function(s,a) {
a <= 0 ? s.unshift(a) : s.push(a);
return s;
}, []);
console.log(res);