Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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_Multidimensional Array - Fatal编程技术网

使用javascript将单个数组转换为多维数组

使用javascript将单个数组转换为多维数组,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我遇到一个练习,希望我编写一个函数,将数组(第一个参数)拆分为大小相同的组(第二个参数),并将其作为多维数组返回。以下是提供的启动程序代码 function chunk(arr, size) { // Break it up. return arr; } chunk(['a', 'b', 'c', 'd'], 2); 因此,在这种特殊情况下,返回的数组应该是[[a,b],[c,d]]。 我尝试过使用array.slice、array.splice和array.push,但我没有得到任

我遇到一个练习,希望我编写一个函数,将数组(第一个参数)拆分为大小相同的组(第二个参数),并将其作为多维数组返回。以下是提供的启动程序代码

function chunk(arr, size) {
  // Break it up.
  return arr;
}

chunk(['a', 'b', 'c', 'd'], 2);
因此,在这种特殊情况下,返回的数组应该是[[a,b],[c,d]]。
我尝试过使用array.slice、array.splice和array.push,但我没有得到任何接近正确答案的结果。如果有人能帮我解释一下这个问题,我将不胜感激。我已经被困在这个问题上好几天了,这真的令人沮丧。谢谢。

这不是我写过的最好的代码,但现在你可以开始了:

function chunk(arr, size) {
    mda = []    
    for (i = 0; i+size < arr.length; i = i + size) { 
        mda.push(arr.slice(i,i+size));
    }
         mda.push(arr.slice(i));
    return mda
}
chunk(['a', 'b', 'c', 'd'], 2)
功能块(arr,大小){
mda=[]
对于(i=0;i+size
向我们展示您已经尝试过的代码。是否遇到练习?这不是给别人做作业的。您是否尝试过使用for循环遍历数组,然后按组中的元素数步进,并从这些元素创建新数组,然后将结果附加到新数组上?
块(['a','b','c','d'],2)[0]
返回
a,b
,而不是创建新数组和for循环,我不知道发生了什么事。我明白了:mda.push(…)正在被放入新的数组中,但是切片部分让我感到困惑。具体来说:(i,i+大小);为什么是:mda.push(arr.slice(i));在for循环之外?mda是由chunk返回的多维数组。循环将原始数组分割为长度为“size”的块。在slice(i,i+size)中,i是开始索引,(i+size)是结束索引。切片返回两个标记之间的浅复制数组。当循环只有一个“块”或部分块要执行时,它将退出。最后一次推送到mda时,会将索引i之后的每一项从输入的数组写入mda。这很有意义。非常感谢。