Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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_For Loop - Fatal编程技术网

JavaScript数组推送缺少值

JavaScript数组推送缺少值,javascript,arrays,for-loop,Javascript,Arrays,For Loop,此函数将获取一个数组并将其分块到单独的数组中,在开头创建一个偏移量并将其包装到另一个数组中。我遇到的问题是,不是原始数组(arr1)中的所有数字都包含在块中。您可以在下面我提供的链接中看到输出。它漏掉了数字5、13、21、29和30。有人能解释为什么会这样吗 function chunkifyArray(input, chunkSize, offset) { const output = []; let tmp = offset ? new Array(offset).fil

此函数将获取一个数组并将其分块到单独的数组中,在开头创建一个偏移量并将其包装到另一个数组中。我遇到的问题是,不是原始数组(arr1)中的所有数字都包含在块中。您可以在下面我提供的链接中看到输出。它漏掉了数字5、13、21、29和30。有人能解释为什么会这样吗

function chunkifyArray(input, chunkSize, offset) {

    const output = [];

    let tmp = offset ? new Array(offset).fill('') : [];

    for(var i = 0; i < input.length; i++){
        if (tmp.length < chunkSize) {
            tmp.push(input[i]);
        } else {
            output.push(tmp);
            tmp = [];     
        }
    }

    return output;
}

var arr1 = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30'];
console.log(chunkifyArray(arr1, 7, 3));
函数chunkifyArray(输入、chunkSize、偏移量){
常量输出=[];
设tmp=offset?新数组(offset).fill(“”):[];
对于(变量i=0;i

因为您从不推送这些值-您将清空tmp insead…请尝试以下操作:

for(var i = 0; i < input.length; i++){
    tmp.push(input[i]);
    if (tmp.length == chunkSize) {
        output.push(tmp);
        tmp = [];     
    }
}
for(变量i=0;i

编辑以确保最后一个区块被推送到输出…

因为您从不推送这些值-您清空tmp insead…尝试以下操作:

for(var i = 0; i < input.length; i++){
    tmp.push(input[i]);
    if (tmp.length == chunkSize) {
        output.push(tmp);
        tmp = [];     
    }
}
for(变量i=0;i

编辑以确保最后一个块被推送到输出…

我对您的代码做了一点修改,以获得所需的结果。您可以使用
%
运算符,并记住在
for
循环的末尾添加最后一部分:

var数据=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30'];
函数chunkifyArray(输入,chunkSize,偏移量=0){
让输出=[],tmp=[];
输入=新数组(偏移量).fill('').concat(输入);
对于(变量i=0;ilog(chunkifyArray(数据,7,3))我对您的代码做了一点修改,以获得所需的结果。您可以使用
%
运算符,并记住在
for
循环的末尾添加最后一部分:

var数据=['1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30'];
函数chunkifyArray(输入,chunkSize,偏移量=0){
让输出=[],tmp=[];
输入=新数组(偏移量).fill('').concat(输入);
对于(变量i=0;ilog(chunkifyArray(数据,7,3))因为你从不推送那些值-你清空tmp insead…因为你从不推送那些值-你清空tmp insead…这仍然会错过最后一块。推送应该先到。这仍然会错过最后一块。推动应该是第一位的。