javascript - 我被困在 Udacity 的多维数组 JavaScript 测验中。

标签 javascript arrays

测验是关于一个多维数组,希望我们使用嵌套的 for 循环遍历每个元素,并将可被 2 整除的值分别替换为字符串 'even' 和 'odd' 以表示偶数和奇数。我无法使用添加的字符串将数字可被 2 整除的数组打印到控制台。

我也尝试过使用 .slice() 和 .splice() 但这也没有得到我想要的结果。以下是我最近的尝试。

编程测验 - 多维数组: 问题:使用嵌套的 for 循环获取下面的数字数组,并将所有可被 2 整除的值(偶数)替换为字符串“偶数”,将所有其他数字替换为字符串“奇数”。

var numbers = [
[243, 12, 23, 12, 45, 45, 78, 66, 223, 3],
[34, 2, 1, 553, 23, 4, 66, 23, 4, 55],
[67, 56, 45, 553, 44, 55, 5, 428, 452, 3],
[12, 31, 55, 445, 79, 44, 674, 224, 4, 21],
[4, 2, 3, 52, 13, 51, 44, 1, 67, 5],
[5, 65, 4, 5, 5, 6, 5, 43, 23, 4424],
[74, 532, 6, 7, 35, 17, 89, 43, 43, 66],
[53, 6, 89, 10, 23, 52, 111, 44, 109, 80],
[67, 6, 53, 537, 2, 168, 16, 2, 1, 8],
[76, 7, 9, 6, 3, 73, 77, 100, 56, 100]
];

我的代码: //创建一个嵌套的for循环来循环遍历每一行和每一列

for(let row = 0; row < numbers.length; row++){
    for(let col = 0; col < numbers.length; col++){

//如果每行每列的偶数都能被2整除,则替换掉那些 //带有偶数的数字

    if(numbers % 2 === 0){
        numbers[row] += 'even';
        }
    }
}
console.log(numbers);

最佳答案

你真的很接近!这归结为您如何引用二维数组中的索引。在嵌套的 for 循环中迭代它需要首先迭代行,然后是列。在您的示例中,您实际上对列进行了两次迭代。为了解决这个问题,您只需在嵌套的 for 循环中迭代数字数组的 row 索引:

    for(let row = 0; row < numbers.length; row++){
        for(let col = 0; col < numbers[row].length; col++){

最后,您需要将目标索引 numbers[row][col] 设置为偶数。在您的示例中,您使用了加法赋值运算符 +=,它执行字符串连接。 += 不是简单地将索引值更改为“偶数”,而是实际上将单词“偶数”添加到数字的末尾。所以索引输出实际上会读取类似 156even 的内容。只需放下加号即可将索引重新分配给 even:

numbers[row][col] = 'even';

    var numbers = [
    [243, 12, 23, 12, 45, 45, 78, 66, 223, 3], 
    [34, 2, 1, 553, 23, 4, 66, 23, 4, 55],
    [67, 56, 45, 553, 44, 55, 5, 428, 452, 3],
    [12, 31, 55, 445, 79, 44, 674, 224, 4, 21],
    [4, 2, 3, 52, 13, 51, 44, 1, 67, 5],
    [5, 65, 4, 5, 5, 6, 5, 43, 23, 4424],
    [74, 532, 6, 7, 35, 17, 89, 43, 43, 66],
    [53, 6, 89, 10, 23, 52, 111, 44, 109, 80],
    [67, 6, 53, 537, 2, 168, 16, 2, 1, 8],
    [76, 7, 9, 6, 3, 73, 77, 100, 56, 100]
    ];

for(let row = 0; row < numbers.length; row++){
    for(let col = 0; col < numbers[row].length; col++){    //iterate over the n-th index of numbers[]
        if(numbers[row][col] % 2 === 0){    //numbers[row][col] points to the nested index
            numbers[row][col] = 'even';    //set index to 'even'
        }
    }
}

console.log(numbers);

这个视频很好地解释了如何迭代二维数组:https://www.youtube.com/watch?v=qdT1P2qmsmU

视频使用的是Java,但是思路是完全一样的。

希望对您有所帮助!多维数组很难让您动脑筋!

关于javascript - 我被困在 Udacity 的多维数组 JavaScript 测验中。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47146627/

相关文章:

javascript - 单击react.js 切换列表的背景颜色

javascript - es6 具有集合的唯一对象数组

javascript - 在文本区域中输入时检测新行

java - 编辑用户输入号码的字典顺序的java代码。的话

C++动态对象数组,函数引用错误LNK2019

javascript - 什么时候使用递归函数?

javascript - 我的添加千位逗号功能不起作用

php - 访问 php 数组中的数据以创建新的结果数组

javascript - 如何通过 URL 发送数组并在 PHP 中提取它?

Java读取文件并将文本存储为数组