Javascript 从一个数组到一组数组
我想像下面这样变换数组:Javascript 从一个数组到一组数组,javascript,arrays,Javascript,Arrays,我想像下面这样变换数组: constmyarray=['a','b','c','d','e','f']; 对这样的事情: const transformedArray=[['a','b'],['c','d'],['e','f']; 我看到的唯一方法是使用一个好的旧for循环,但是有没有更优雅的方法来使用数组。prototype函数?您可以使用和% constmyarray=['a','b','c','d','e','f'] const newArray=myArray.reduce((ac
constmyarray=['a','b','c','d','e','f'];
对这样的事情:
const transformedArray=[['a','b'],['c','d'],['e','f'];
我看到的唯一方法是使用一个好的旧for循环,但是有没有更优雅的方法来使用
数组。prototype
函数?您可以使用和%
constmyarray=['a','b','c','d','e','f']
const newArray=myArray.reduce((acc,a,i)=>{
常数指数=数学层(i/2);
acc[索引]=acc[索引]| |[];
会计科目[指数][i%2]=a
返回acc
}, [])
log(newArray)
下面的解决方案使用reduce
迭代数组中的项。我们对项的索引使用模检查来确定是否需要启动新数组
代码在检查不需要形成新数组的索引时会添加一个对象。我们稍后会过滤掉这些对象。也许有一种更优雅的方法可以做到这一点,但我觉得效果相当不错
常量字母=['a','b','c','d','e','f'];
常量拆分为块=(arrayIn,size)=>arrayIn.reduce(
(上、当前、i)=>[
…上一页,
i%大小===0
?阵列。切片(i,i+尺寸)
:{'\u remove':true}
],
[],
).filter(x=>!x[''删除']
常量结果=拆分为块(字母,2)
console.dir(result)
可用于创建块数组:
constmyarray=['a','b','c','d','e','f','g'];
const chunk=n=>arr=>
Array.from({length:Math.ceil(arr.length/n)},(\ux,i)=>
myArray.slice(i*n,(i+1)*n)
);
const log=arr=>console.log(JSON.stringify(arr));
日志(区块(2)(myArray));//[“a”、“b”]、[“c”、“d”]、[“e”、“f”]、[“g”]]
日志(块(3)(myArray));//[[“a”、“b”、“c”]、[“d”、“e”、“f”]、[“g”]
另一个我认为最具可读性的解决方案
constmyarray=['a','b','c','d','e','f'];
const transformedArray=Array(myArray.length/2).fill().map(((uu,i)=>[myArray[i*2],myArray[i*2+1]);
控制台日志(transformedArray)代码>