在JavaScript中测试多维数组
在JavaScript中测试多维数组
我在FreeCodeCamp上解决挑战。下面的代码通过了他们的测试并被标记为已解决的挑战,但是我的自定义测试未通过,我不明白为什么...\n
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"]]);
\n如果我对JS中的数组的本质理解正确,警告应该打印出true,但实际上打印出了false,我不知道为什么。
在JavaScript中测试多维数组的问题的原因是需要比较两个多维数组是否相等。解决方法是使用一个函数来分割原始数组,并将分割后的子数组存储在一个新的数组中。然后,通过比较新的数组和预期的多维数组来判断它们是否相等。
具体解决方法如下:
首先,定义一个名为chunk的函数,接受一个数组arr和一个大小size作为参数。函数内部创建一个空数组output和一个变量length来保存原始数组的长度。
然后,使用一个循环来遍历原始数组。循环的初始条件为x=0,循环的结束条件为x 最后,返回output数组作为结果。 在代码的下一部分,定义了一个名为array1的变量,通过调用chunk函数将一个包含12个元素的数组按照大小为2进行分割。 然后,定义了一个名为array2的变量,它是一个预期的多维数组,包含了6个子数组,每个子数组包含2个元素。 接下来,使用equals变量来比较array1和array2是否相等。equals变量的值为两个条件的逻辑与运算结果。第一个条件是array1的长度是否等于array2的长度,第二个条件是使用every方法遍历array1和array2,对每个元素进行比较。比较的条件是子数组的长度是否相等,并且使用every方法再次遍历子数组的元素,对每个元素进行比较。 最后,使用alert方法将equals的值输出。 通过以上的解决方法,可以测试多维数组在JavaScript中的相等性。
测试多维数组在JavaScript中的原因是因为作者想比较两个数组是否相等。作者尝试了一个函数来实现这个比较,但是发现在比较两个二维数组时出现了问题。作者认为问题可能是因为这些数组是二维的。为了解决这个问题,作者进行了一些更正,并在代码中进行了检查。作者还在评论中提到,第二个长度检查应该是element.length == array2[index].length
,因为内部数组可能具有不同的长度。
文章链接:[How to Compare two Arrays are Equal using Javascript?](https://stackoverflow.com/questions/22395357)
以下是作者进行的更正和检查的代码:
var equals = (array1.length == array2.length) && array1.every(function(element, index) { return element.every(function(element2, index2) { return element2 == array2[index][index2]; }); }); alert(equals);
文章结束。