js一维数组转指定二维数组问题

目标数组 [1, 2, 3, 4, 5, 6, 7]
目标结果 [[1, 2], [3, 4], [5, 6], [7]]

想到了一种最简单,但好像有点麻烦,有没有更好的方法
const arr = [1, 2, 3, 4, 5, 6, 7];
arr
.map((item, index) => {
  if (index % 2 === 0) {
    return [item, arr[index + 1]].filter(item=>item !== undefined);
  } else {
    return null;
  }
})
.filter((item) => item !== null);
阅读 1.8k
4 个回答
const arr = [1, 2, 3, 4, 5, 6, 7];
const result = []
for(let i = 0; i<arr.length; i+=2){
    result.push(arr.slice(i,i+2))
}
console.log(result)

image.png

lodash的chunk函数

_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
 
_.chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]

image.png

let arr = [1, 2, 3, 4, 5, 6, 7];
arr.reduce((acc,cur,idx)=>{
    idx % 2 ? acc[acc.length-1].push(cur) : acc.push([cur]);
    return acc;
},[]);
let arr = [1, 2, 3, 4, 5, 6, 7];
arr.reduce((acc,cur,idx)=>((idx % 2 ? acc[acc.length-1].push(cur) : acc.push([cur])),acc),[]);
var arr = [1,2,3,4,5,6,7]
arr.flatMap((v, i) => i % 2 ? [] : [arr.slice(i, i + 2)])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题