Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从一个数组到一组数组_Javascript_Arrays - Fatal编程技术网

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)