比如我有一组数组,如何让正负值分开成两个小的数据

比如我有一组数组,如何让正负值分开成两个小的数据



let abc=['-3','-2','-1','0','3','12']  把abc分成两个数组
   var abc1=['0','3','12'];
  var abc2=['-3','-2','-1'];

然后让正值排序后加自己的索引变成(0+03+112+2let abc1=['0','4','14'];

然后在把两个数组合在一起

let   abc=['-3','-2','-1','0','4','14'] 

如果是动态数据。如何把>=0和<0的区分开,想上面的逻辑一样

不用拆开再组,就你刚才那样就行,


let j = 0; 
for(let i=0;i<abc.length;i++){
  
  if(abc[i].num>=0){
    abc[i].num+=j;
    j++
  }  
}

遍历一下,判断大于0就添加进数组1里,小于0就添加进数组2里呗

刚才想着回答你的那个问题 我也是这个思路 回答完了 一提交你给删除了哈哈

img

let abc=['-3','-2','-1','0','3','12']

                //通过冒泡排序从小到大排序
                for(let i=0;i<abc.length-1;i++){
                    for(let j=0;j<abc.length-1;j++){
                        if(abc[j].num>abc[j+1].num){
                            var temp=abc[j+1]
                            abc[j+1]=abc[j]
                            abc[j]=temp
                        }
                    }
                }
                //根据index标识重新赋值给每一个变量
//第一步: 获取第一个大于0的索引
var index
for(let s=0;s<abc.length;s++){
  if(abc[s]*1 >= 0 ){
    index = s
    break
  }
}
//第二步: 根据索引分割abc数组
//第三步:修改大于0的数组
var abc1= abc.slice(0,index)
var abc2= abc.slice(index).map((item,index) => {
  item = item*1 + index
  return item
})
//第四步: 拼接数组
abc = abc1.concat(abc2)
console.log(abc)


如有帮助,麻烦点个【采纳此答案】 谢谢啦~

  let arr = [-3, -2, -1, 0, 3, 12];
    let arr1 = [];
    let arr2 = [];
    arr.forEach((item) => {
      if (item < 0) {
        arr1.push(item);
      } else {
        arr2.push(item);
      }
    });
    console.log(arr1, arr2);  //  [-3, -2, -1] ,[0, 3, 12]

Object.entries(['-3','-2','-1','0','3','12'].reduce((p, c) => (m => p[m] ? { ...p, [m]: [ ...p[m], c ] } : { ...p, [m]: [c] })(c < 0 ? '-' : '+'), {})).map(([key, val]) => key === '+' ? [...val].sort((e1, e2) => e1 - e2).map((e, i) => String(~~e + i)) : [...val]).reduce((p, c) => [...p, ...c], [])

img