我试图在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()方法使用临时数组,但是如何在不使用该数组中的临时数组的情况下执行此操作?
使用 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)
| 归档时间: |
|
| 查看次数: |
5795 次 |
| 最近记录: |