Javascript 自由代码营->篝火:矮猴子

Javascript 自由代码营->篝火:矮猴子,javascript,arrays,Javascript,Arrays,这篝火来自自由代码营地 这场篝火中的任务如下: var ars = []; var all = []; var ll = 0; function chunk(arr, size) { for (var n = 0; n < arr.length/size; n++ ) { for(var l = 0; l < arr.length/(arr.length/size);l++) { if(ll < arr.length){ ars[l]= arr[ll];

这篝火来自自由代码营地

这场篝火中的任务如下:

var ars = [];
var all = [];
var ll = 0;

function chunk(arr, size) {
 for (var n = 0; n < arr.length/size; n++ ) {
  for(var l = 0; l < arr.length/(arr.length/size);l++) {
   if(ll < arr.length){
    ars[l]= arr[ll];
   }
   ll += 1;
  }
  all[n] = ars;
  ars = [];
 }
 return all;
}

chunk([0, 1, 2, 3, 4, 5], 4);

编写一个函数,将数组的第一个参数拆分为第二个参数大小的组,并将其作为多维数组返回

我的代码如下:

var ars = [];
var all = [];
var ll = 0;

function chunk(arr, size) {
 for (var n = 0; n < arr.length/size; n++ ) {
  for(var l = 0; l < arr.length/(arr.length/size);l++) {
   if(ll < arr.length){
    ars[l]= arr[ll];
   }
   ll += 1;
  }
  all[n] = ars;
  ars = [];
 }
 return all;
}

chunk([0, 1, 2, 3, 4, 5], 4);
这和支票系统认为正确的是一样的:

[ [ 0, 1, 2, 3 ], [ 4, 5 ] ]
我希望并认为空间不重要。如果不是这样,请告诉我

但在我写的东西中没有看到这一点。它只是看到

[ [], [] ]

谁能告诉我怎么了吗?

空格不重要。但是我不完全理解你的问题。你得到错误数据的理由是什么

我认为代码中的一个大问题是函数在全局范围内操作变量。将ars和all的变量声明放在函数范围内

这也适用于:

函数chunkr,大小{ var n=[]; 惠勒长度{ n、 pushr.0,尺寸; } 返回n; } var r='ABCDEFGHIjklmnopqrstuvxyz'。拆分; document.getElementByIdresult.innerHTML=;
function chunk(arr, size) {
 var up=[];
 var a=0;
 var b=0;
 while(a<arr.length){ 
   up[b]=[];
   for(var i=0;i<size&&a<arr.length;i++){
     up[b].push(arr[a]);
     console.log(arr[a]);
     a++;
   }
  b++;
 }
  return up;
}
chunk(["a", "b", "c", "d"], 2);

空间不重要。但是我不完全理解你的问题。你得到错误数据的理由是什么

我认为代码中的一个大问题是函数在全局范围内操作变量。将ars和all的变量声明放在函数范围内

这也适用于:

函数chunkr,大小{ var n=[]; 惠勒长度{ n、 pushr.0,尺寸; } 返回n; } var r='ABCDEFGHIjklmnopqrstuvxyz'。拆分; document.getElementByIdresult.innerHTML=;
function chunk(arr, size) {
 var up=[];
 var a=0;
 var b=0;
 while(a<arr.length){ 
   up[b]=[];
   for(var i=0;i<size&&a<arr.length;i++){
     up[b].push(arr[a]);
     console.log(arr[a]);
     a++;
   }
  b++;
 }
  return up;
}
chunk(["a", "b", "c", "d"], 2);

这就是我写的答案。它正在工作

function chunk(arr, size) {
 var arr2 =[],
 i=0;
 while( i< arr.length){
  arr2.push(arr.slice(i,i+=size));
 }
 return arr2;
}

这就是我写的答案。它正在工作

function chunk(arr, size) {
 var arr2 =[],
 i=0;
 while( i< arr.length){
  arr2.push(arr.slice(i,i+=size));
 }
 return arr2;
}

这是@oumnya benhassou的答案的一个稍微清晰的版本:

function chunkArrayInGroups(arr, size) {
    var holderArray = [];

    for (var i = 0; i < arr.length; i = i + size) {
        holderArray.push(arr.slice(i, i + size));
  }
  return holderArray;
}

chunkArrayInGroups(["a", "b", "c", "d"], 2);

这是@oumnya benhassou的答案的一个稍微清晰的版本:

function chunkArrayInGroups(arr, size) {
    var holderArray = [];

    for (var i = 0; i < arr.length; i = i + size) {
        holderArray.push(arr.slice(i, i + size));
  }
  return holderArray;
}

chunkArrayInGroups(["a", "b", "c", "d"], 2);

当我这样做的时候,我不知道如何使用slice方法,但是使用splice方法应该更容易理解

function chunkArrayInGroups(arr, size) {
  var times = Math.ceil(arr.length/size), start=0, tempArr=[];
  for(var i=0;i<times;i++){
    tempArr.push(arr.slice(start, start+size));
    start = start+size;
  }
  return tempArr;
}

chunkArrayInGroups(["a", "b", "c", "d"], 2);

希望这能有所帮助。

在我做这件事的时候,我不知道如何使用切片方法,但是使用拼接方法应该更容易理解

function chunkArrayInGroups(arr, size) {
  var times = Math.ceil(arr.length/size), start=0, tempArr=[];
  for(var i=0;i<times;i++){
    tempArr.push(arr.slice(start, start+size));
    start = start+size;
  }
  return tempArr;
}

chunkArrayInGroups(["a", "b", "c", "d"], 2);
function chunkArrayInGroups(arr, size) {
var placeholder = [];
for (i=0; i<arr.length;)
placeholder.push(arr.slice(i,i+=size));  


return placeholder;
}
希望这有帮助

function chunkArrayInGroups(arr, size) {
var placeholder = [];
for (i=0; i<arr.length;)
placeholder.push(arr.slice(i,i+=size));  


return placeholder;
}
在这里:

times变量表示循环执行的次数。 例如: 考虑这个数组[a,b,c,d,e],2 这里时间=3

在第一个循环中,[a,b]

在第二个循环中,[c,d]

第三环路[e]

在这里:

times变量表示循环执行的次数。 例如: 考虑这个数组[a,b,c,d,e],2 这里时间=3

在第一个循环中,[a,b]

在第二个循环中,[c,d]

第三个循环,[e]

这非常干净

function chunk(arr, size) {
  // Break it up.
  var i=0,j=size,pack=[],arrOutput=[];
  var loop=(arr.length/size);
  for(k=0;k<loop;k++){
    pack=arr.slice(i,j);
    arrOutput.push(pack);
    pack=[];
    i=j;
    j=i+size;

  }
  return arrOutput;
}
首先,我们创建一个空数组。 我们创建了一个for循环,但没有i++,因为我们想分块移动。 我们将切片数组推送到新的空数组中。slicei+=大小在此处起作用 因为切片x,y从x开始,在y-1结束,如果您愿意,不包括在内。

这非常干净

function chunk(arr, size) {
  // Break it up.
  var i=0,j=size,pack=[],arrOutput=[];
  var loop=(arr.length/size);
  for(k=0;k<loop;k++){
    pack=arr.slice(i,j);
    arrOutput.push(pack);
    pack=[];
    i=j;
    j=i+size;

  }
  return arrOutput;
}
    function chunk(arr, size) {
  // Break it up.
  var newarr=[];
  var Len = Math.floor(arr.length/size);
  var len = arr.length;
  var num =len%size;
  if (num===0) {

  for (var i = 0; i < Len; i++) {
    newarr.push(arr.splice(0,size));
  }
  }
  else{
    for (var j = 0; j < Len; j++) {
    newarr.push(arr.splice(0,size));    
  }
  newarr.push(arr.splice(0,num));
  }
  return newarr;
  }
首先,我们创建一个空数组。 我们创建了一个for循环,但没有i++,因为我们想分块移动。 我们将切片数组推送到新的空数组中。slicei+=大小在此处起作用 由于切片x、y从x开始,在y-1结束,因此如果愿意,不包括y

    function chunk(arr, size) {
  // Break it up.
  var newarr=[];
  var Len = Math.floor(arr.length/size);
  var len = arr.length;
  var num =len%size;
  if (num===0) {

  for (var i = 0; i < Len; i++) {
    newarr.push(arr.splice(0,size));
  }
  }
  else{
    for (var j = 0; j < Len; j++) {
    newarr.push(arr.splice(0,size));    
  }
  newarr.push(arr.splice(0,num));
  }
  return newarr;
  }
我使用动态指针I和j按大小剪切原始数组,然后推入输出数组

 function chunkArrayInGroups(arr, size) {
  var myArr = [];
  var loopCount = Math.ceil(arr.length/size);

  var pos = 0;

  for (var i = 0; i < loopCount; i++){
    myArr.push(arr.slice(pos, size + pos));
    pos += size;
  }

  return myArr;
}

chunkArrayInGroups(["a", "b", "c", "d"], 3);

我使用动态指针I和j按大小剪切原始数组,然后推入outputArray。

编写一个函数,将数组的第一个参数拆分为大小为第二个参数的组,并将其作为二维数组返回

 function chunkArrayInGroups(arr, size) {
  var myArr = [];
  var loopCount = Math.ceil(arr.length/size);

  var pos = 0;

  for (var i = 0; i < loopCount; i++){
    myArr.push(arr.slice(pos, size + pos));
    pos += size;
  }

  return myArr;
}

chunkArrayInGroups(["a", "b", "c", "d"], 3);
函数chunkArrayingGroupSarr,大小{ var chunkArray=[];
对于var i=0,len=arr.length;i编写一个函数,将数组的第一个参数拆分为第二个参数的长度,并将其作为二维数组返回

函数chunkArrayingGroupSarr,大小{ var chunkArray=[];
对于var i=0,len=arr.length,我是这样做的,希望能有所帮助

function chunkArrayInGroups2(arr , size) {
  var b = [];
  for (;arr.length > 0; arr=arr.slice(size)) {
    b.push(arr.slice(0, size));
  }
  return b;
}

我是这样做的,希望有帮助

function chunkArrayInGroups2(arr , size) {
  var b = [];
  for (;arr.length > 0; arr=arr.slice(size)) {
    b.push(arr.slice(0, size));
  }
  return b;
}

另一个解决方案选项-

function chunkArrayInGroups(arr, size) {
  // Break it up.
  var result = [];
  var s = 0; // Begin of the slice.

  for (var i = 0; i < arr.length; i++) {

    // It goes like slice(0, 2+0), then slice(2, 2+2), slice(4, 4+2).
    // We increment s by 2 when we add to the array.
    var n = arr.slice(s, size+s);

    // Only add when slicing is not empty to prevent empty values.
    if (n.length !== 0) {
      result.push(n);
      s += size;  // Increment s by 2.
    }


  }
  return result;

}

chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3);

另一个解决方案选项-

function chunkArrayInGroups(arr, size) {
  // Break it up.
  var result = [];
  var s = 0; // Begin of the slice.

  for (var i = 0; i < arr.length; i++) {

    // It goes like slice(0, 2+0), then slice(2, 2+2), slice(4, 4+2).
    // We increment s by 2 when we add to the array.
    var n = arr.slice(s, size+s);

    // Only add when slicing is not empty to prevent empty values.
    if (n.length !== 0) {
      result.push(n);
      s += size;  // Increment s by 2.
    }


  }
  return result;

}

chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3);

这是另一个解决方案


这是另一个解决方案


这是什么语言?哦,对不起,这是Javascript这是什么语言?哦,对不起,这是Javascript这是我对那场篝火的解决方案。我希望它能帮助你解释你的答案。这是我对那场篝火的解决方案。我希望它能帮助你解释你的答案。请在你的答案中添加解释。请在你的答案中添加解释的代码片段可能会解决问题,确实有助于提高您的文章质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。虽然此代码片段可能会解决问题,但确实有助于提高您的文章质量。请记住,您 如果将来读者重新回答这个问题,那么这些人可能不知道您的代码建议的原因。