繁体   English   中英

在JavaScript中测试多维数组

[英]Testing multidimensional arrays in javascript

我解决了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"]]);

如果我正确掌握了JS中的数组,则Alert应该显示true,但是显示false,我不知道为什么?

这正在工作:

 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; } var array1 = chunk(["a", "b", "c", "d"], 2); var array2 = [ ["a", "b"], ["c", "d"] ]; var equals = (array1.length == array2.length) && array1.every(function(element, index) { return (element.length == array2[index].length) && element.every(function(element1, index1) { return element1 === array2[index][index1]; }); }); alert(equals); 

更多信息: 如何使用Javascript比较两个数组相等?

这是最有效的解决方案:

 function chunk(arr, size) { var output = []; var length = arr.length; for (var x = 0, length = arr.length; x < length; x = x + size) { output.push(arr.slice([x], x + size)); } return output; } var array1 = chunk(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M'], 2); var array2 = [ ["A", "B"], ["C", "D"], ["E", "F"], ["G", "H"], ["J", "K"], ["L", "M"] ] var equals = (array1.length == array2.length) && array1.every(function(element, index) { return (element.length == array2[index].length) && element.every(function(element1, index1) { return element1 === array2[index][index1]; }); }); alert(equals); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM