为了账号安全,请及时绑定邮箱和手机立即绑定

js,ES6如何快速简洁的拆分数组?

js,ES6如何快速简洁的拆分数组?

隔江千里 2019-06-13 10:18:44
目前了解的解决办法constoldList=[1,2,3,4,5,6,7]//使用reduce函数接受一个初始值{0:[],1:[],length:2},//初始值包含两个空数组,和一个数组长度(Array.from方法要求将对象转数组时对象内要有这个属性)//在reduce函数内根据索引做余2判断,因为分两列,余0的加入第一个数组,余1的加入第二个数组//最后reduce返回遍历完的对象{0:[1,3,5,7],1:[2,4,6],length:2}//使用Array.from({0:[1,3,5,7],1:[2,4,6],length:2})得到数组[[1,3,5,7],[2,4,6]]//解构数组使用concat合并,完事constnewList=[].concat(...(Array.from(oldList.reduce((total,cur,index)=>{total[index%2].push(cur)returntotal},{0:[],1:[],length:2}))))console.log(newList)输出[1,3,5,7,2,4,6]然后再将两个数组合并,总之就是我想将[1,2,3,4,5,6]拆成[1.3.5]和[2,4,6]然后再合并成有什么最简洁,代码最少的方法将[1,2,3,4,5,6]改为[1,3,5,2,4,6],最好只遍历一次数组java代码:List里面的对象元素,以某个属性来分组,例如,以id分组,将id相同的放在一起:复制代码//List以ID分组Map<Integer,List>Map<Integer,List>groupBy=appleList.stream().collect(Collectors.groupingBy(Apple::getId));System.err.println("groupBy:"+groupBy);{1=[Apple{id=1,name='苹果1',money=3.25,num=10},Apple{id=1,name='苹果2',money=1.35,num=20}],2=[Apple{id=2,name='香蕉',money=2.89,num=30}],3=[Apple{id=3,name='荔枝',money=9.99,num=40}]}
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

这是题主按照答主思路写的一个思路一样,但实现不完全一样的符合题主要求的答案
constoldList=[1,2,3,4,5,6,7]
//使用reduce函数接受一个初始值{0:[],1:[],length:2},
//初始值包含两个空数组,和一个数组长度(Array.from方法要求将对象转数组时对象内要有这个属性)
//在reduce函数内根据索引做余2判断,因为分两列,余0的加入第一个数组,余1的加入第二个数组
//最后reduce返回遍历完的对象{0:[1,3,5,7],1:[2,4,6],length:2}
//使用Array.from({0:[1,3,5,7],1:[2,4,6],length:2})得到数组[[1,3,5,7],[2,4,6]]
//解构数组使用concat合并,完事
constnewList=[].concat(...(Array.from(oldList.reduce((total,cur,index)=>{
total[index%2].push(cur)
returntotal
},{0:[],1:[],length:2}))))
console.log(newList)
输出
[1,3,5,7,2,4,6]
已下为答主提供的实现方式及思路,谢谢------------------------------------------------------
constarr=[1,2,3,4,5,6]
constnewArr=[...arr.filter(e=>e%2),...arr.filter(e=>e%2===0)]
其实也没必要追求这点性能,既要代码少,又要效率高...我觉得乖乖写for循环最好了
嗯...
constobj=arr.reduce((a,b)=>{
a[b%2].push(b)
returna
},{0:[],1:[]})
constnewArr=obj[1].concat(obj[0])
遍历一次呦不知道合不合楼主口味
                            
查看完整回答
反对 回复 2019-06-13
  • 2 回答
  • 0 关注
  • 7098 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信