比如我有一组数组,如何让正负值分开成两个小的数据
let abc=['-3','-2','-1','0','3','12'] 把abc分成两个数组
var abc1=['0','3','12'];
var abc2=['-3','-2','-1'];
然后让正值排序后加自己的索引变成(0+0,3+1,12+2)
let 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里呗
刚才想着回答你的那个问题 我也是这个思路 回答完了 一提交你给删除了哈哈
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], [])