Javascript 给定一个正整数和负整数的数组,重新排列它,使一端有正整数,另一端有负整数

Javascript 给定一个正整数和负整数的数组,重新排列它,使一端有正整数,另一端有负整数,javascript,arrays,algorithm,Javascript,Arrays,Algorithm,给定一个正整数和负整数的数组,重新排列它,以便一端有正整数,另一端有负整数,但保留它们在原始数组中的出现顺序 例如:arr=[2,-12,4,46,-20,-1] 答案应该是:arr=[-12,-20,-1,2,4,46] 如何在JavaScript中以这种方式排列数组 谢谢。您可以使用Array#reduce功能获得所需的结果。如果迭代元素小于或等于0,则将其添加到结果数组的开头。如果没有-将其推到底 var arr=[2,-12,4,46,-20,-1], res=arr.reduce(函

给定一个正整数和负整数的数组,重新排列它,以便一端有正整数,另一端有负整数,但保留它们在原始数组中的出现顺序

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

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


谢谢。

您可以使用
Array#reduce
功能获得所需的结果。如果迭代元素小于或等于
0
,则将其添加到结果数组的开头。如果没有-将其推到底

var arr=[2,-12,4,46,-20,-1],
res=arr.reduce(函数s,a){

a使用
Array#reduce
函数可以获得所需的结果。如果迭代元素小于或等于
0
,则将其添加到结果数组的开头。如果不是,则将其推到末尾

var arr=[2,-12,4,46,-20,-1],
res=arr.reduce(函数s,a){
a您可以使用
reduce()
创建一个正负值对象,然后将这些值合并到一个数组中

var-arr=[2,-12,4,46,-20,-1];
var o=arr.reduce(函数(r,e){
返回e<0?r.n.push(e):r.p.push(e),r
},{p:[],n:[]})
var结果=[…o.n,…o.p]
console.log(result)
您可以使用
reduce()
创建一个正负值对象,然后将这些值合并到一个数组中

var-arr=[2,-12,4,46,-20,-1];
var o=arr.reduce(函数(r,e){
返回e<0?r.n.push(e):r.p.push(e),r
},{p:[],n:[]})
var结果=[…o.n,…o.p]


console.log(result)
什么编程语言?我在JavaScript中添加了一个Java应答端口。什么编程语言?我在JavaScript中添加了一个Java应答端口。你难道没有意识到仅仅对数组排序就已经做到了“开始时为负,结束时为正”事情XD@NiettheDarkAbsol该死的,让头脑放屁xdA更有趣的“黑客”应该是
arr.sort(函数(a,b){返回a/0-b/0;})
-这有点滥用了这样一个事实,
NaN
在排序时既不被认为是正的,也不被认为是负的:D@NiettheDarkAbsol这是一个很好的技巧,但是如果我们已经使用了
sort
函数,为什么要把它复杂化而不是简单的
a-b
?;因为我对这个问题的理解是排序应该是稳定的,剩下t按负数出现的顺序排列。你难道没有意识到仅仅对数组排序就已经做到了“开始时为负数,结束时为正数”的事情吗?XD@NiettheDarkAbsol该死的,让头脑放屁xdA更有趣的“黑客”应该是
arr.sort(函数(a,b){返回a/0-b/0;})
-这有点滥用了这样一个事实,
NaN
在排序时既不被认为是正的,也不被认为是负的:D@NiettheDarkAbsol这是一个很好的技巧,但是如果我们已经使用了
sort
函数,为什么要把它复杂化而不是简单的
a-b
?;因为我对这个问题的理解是排序应该是稳定的,剩下t按负数出现的顺序排列。很明显,您重新打开这个清晰的副本只是为了能够发布您的答案。请不要再这样做,这是对您特权的滥用。@Matt♦ 明白了。只有一个问题,如果我投票重新打开某个我认为不重复的重复问题,是否会立即重新打开该问题,或者更多的用户也需要投票重新打开该问题。这取决于你是否是问题标签中的金章持有人。如果是,它会立即重新打开。如果不是,你必须等待其他人用户也可以投票。请看这里似乎很清楚,您重新打开此清晰副本只是为了能够发布您的答案。请不要再这样做,这是对您特权的滥用。@Matt♦ 明白了。只有一个问题,如果我投票重新打开某个我认为不重复的重复问题,是否会立即重新打开该问题,或者更多的用户也需要投票重新打开该问题。这取决于你是否是问题标签中的金章持有人。如果是,它会立即重新打开。如果不是,你必须等待其他人用户也可以投票。请参阅