Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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_Algorithm - Fatal编程技术网

在javascript中测试多维数组

在javascript中测试多维数组,javascript,arrays,algorithm,Javascript,Arrays,Algorithm,我在FreeCodeCamp上解决挑战。下面的代码通过了测试,挑战被标记为已解决,但我自己的测试没有通过,我不明白为什么 function chunk(arr, size) { if (size >= arr.length || size <= 0) return [arr]; var result = []; var i = 0; while(arr.length > 0) { result.push([]);

我在FreeCodeCamp上解决挑战。下面的代码通过了测试,挑战被标记为已解决,但我自己的测试没有通过,我不明白为什么

function chunk(arr, size) {
    if (size >= arr.length || size <= 0)
        return [arr];
    var result = [];
    var i = 0;
    while(arr.length > 0) {
        result.push([]);
        for (var j = 0; j < size && arr.length > 0; ++j) {
            result[i].push(arr.shift());
        }
        i++;
    }
    return result;
}

alert(chunk(["a", "b", "c", "d"], 2) == [["a", "b"], ["c", "d"]]);
功能块(arr,大小){
如果(尺寸>=arr.length | |尺寸0){
结果:推送([]);
对于(变量j=0;j0;++j){
结果[i].push(arr.shift());
}
i++;
}
返回结果;
}
警报(区块([“a”、“b”、“c”、“d”]、2)==[“a”、“b”]、[“c”、“d”]);
如果我在JS中正确理解了数组的本质,警报应该打印为true,但它打印为false,我不知道为什么?

这是有效的:

功能块(arr,大小){
如果(尺寸>=arr.length | |尺寸0){
结果:推送([]);
对于(变量j=0;j0;++j){
结果[i].push(arr.shift());
}
i++;
}
返回结果;
}
var array1=区块([“a”、“b”、“c”、“d”],2);
变量array2=[
[“a”、“b”],
[“c”、“d”]
];
var等于(array1.length==array2.length)和&array1.every(函数(元素、索引){
返回(element.length==array2[index].length)和&element.every(函数(element1,index1){
返回元素1==array2[index][index1];
});
});

警惕(等于)这是最有效的解决方案:

功能块(arr,大小){
var输出=[];
变量长度=arr.length;
对于(变量x=0,长度=arr.length;x警惕(等于)由于数组是对象,并且只有当两个对象都指向内存中的同一个对象时,对象才相等,所以不能简单地使用
==
检查数组是否相等。你需要一个更复杂的平等性检查。不过,对于这种简单的情况,比较
JSON.stringify
结果是可行的。数组是对象。它们是通过引用传递的,所以
var a=['a'];变量b=['a'];a==b
将返回false.JSON.stringify works,谢谢@Yoshi!我忘记了数组是objects=(我认为它不起作用,因为这些数组是二维的。请查看我的更正,如果我的检查正确,请给出一些反馈?`var equals=(array1.length==array2.length)&&array1.every(function(element,index){return element.every(function)(element2,index2){return element2==array2[index][index2];});});alert(equals);`是的,谢谢你,@P.Jairaj!但是如果我们更仔细一点,我想第二次长度检查应该是这样的:
element.length==array2[index].length
,因为内部数组可能有不同的长度=)啊哈…我厌倦了这些注释代码格式…有人能帮我吗?=)我已经尝试了我认为所有的变体。。。