[英]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.