在JavaScript中测试多维数组

6 浏览
0 Comments

在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,我不知道为什么。

0
0 Comments

在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中的相等性。

0
0 Comments

测试多维数组在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);

文章结束。

0