给定一组正负整数,重新排列它,使得一端为正整数,另一端为负整数

时间:2017-04-30 21:16:12

标签: javascript arrays algorithm

给定一个正整数和负整数数组,重新排列它,使得一端为正整数,另一端为负整数,但保留原始数组中的出现顺序。

例如:arr = [2,-12,4,46,-20,-1] 答案应该是:arr = [-12,-20,-1,2,4,46]

如何在JavaScript中以这种方式排列数组?

感谢。

2 个答案:

答案 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;
&#13;
&#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);