使用javascript在数组中分隔负数和正数

ary*_*yan 3 javascript

我试图在Javascript中分离数组的负面和正面元素,以便之后首先出现所有负面元素,然后是正面元素,每个元素都按原始顺序排列.

例:

输入数组:     [1,2,-3,-2,4]
输出数组:[-3,-2,1,2,4]

输入数组:     [3,2,-1,0,-4,3,6,-7,-6]
输出数组:[-1,-4,-7,-6,3,2,0,3,6]

我可以使用push()方法使用临时数组,但是如何在不使用该数组中的临时数组的情况下执行此操作?

Pra*_*lan 6

使用 sort()

var res = [1, 2, -3, -2, 4].sort(function(a, b) {
  return a - b;
});

// or just use, var res = [1, 2, -3, -2, 4].sort();

document.write(JSON.stringify(res));
Run Code Online (Sandbox Code Playgroud)

要根据需要进行排序,您需要添加自定义排序条件.

更新: 在您的情况下,sort()不会保留相同值项的位置,因此您可以使用filter()concat().使用filter()不同的阵列中得到负数,零和正数后串连它,你想用什么顺序concat().

var res = [3, 4, -6, 0, -8, -1, 3, -6, 1, -8, -6, -1];
//get positive negative values
var neg = res.filter(function(v) {
    return v < 0;
  }),
  // get positive values
  pos = res.filter(function(v) {
    return v > 0;
  }),
  // get zeros
  zero = res.filter(function(v) {
    return v == 0;
  });

// concat result arrays
res = neg.concat(zero, pos);

document.write(JSON.stringify(res));
Run Code Online (Sandbox Code Playgroud)

相同的方法,不使用任何其他变量

var res = [3, 4, -6, 0, -8, -1, 3, -6, 1, -8, -6, -1];

res = res.filter(function(v) {
  return v < 0;
}).concat(res.filter(function(v) {
  return v == 0;
}), res.filter(function(v) {
  return v > 0;
}));

document.write(JSON.stringify(res));
Run Code Online (Sandbox Code Playgroud)