【问题标题】:Nested for loop with if statement and 2-dim array javascript [duplicate]带有if语句和2维数组javascript的嵌套for循环[重复]
【发布时间】:2019-03-18 03:35:12
【问题描述】:

我试图在我的 2 维数组 arr 中找到“a”。如果有“a”,则使用 if 语句,它应该在“a”在我的另一个数组 arr 中的相同位置将我的 bol 2 维度数组设置为 true。

var x; 
var y; 
var arr = [
        ["a", "b", "c"],
        ["d", "e", "a"],
        ["1", "2", "3"],
        ["a", "f", "d"]
    ];
var bol = new Array(4).fill(new Array(3).fill(false));
for (x = 0; x <= 3; x++) {
        for (y = 0; y <= 2; y++) {
            if (arr[x][y] == "a") {
                bol[x][y] = true;
            }
        }
    }
console.log(bol);

我希望 bol 看起来像这样: 波尔

[[true, false, false],
[false, false, true],
[false, false, false],
[true, false, false]];

但是在控制台中 bol 看起来像这样:

 [true, false, true]
 [true, false, true]
 [true, false, true]
 [true, false, true]

请告诉我我做错了什么。谢谢!

【问题讨论】:

  • fill 填充相同的对象引用,如果不是原始的。

标签: javascript for-loop if-statement multidimensional-array


【解决方案1】:

虽然Array#fill 使用相同的对象/基元填充数组,但您需要创建独立的数组。

例如,Array.from 和映射函数的第二个参数是另一个 Array.from 方法。

var x, 
    y; 
    arr = [["a", "b", "c"], ["d", "e", "a"], ["1", "2", "3"], ["a", "f", "d"]],
    bol = Array.from({ length: 4 }, _ => Array.from({ length: 3}, _ => false));

for (x = 0; x <= 3; x++) {
        for (y = 0; y <= 2; y++) {
            if (arr[x][y] == "a") {
                bol[x][y] = true;
            }
        }
    }
console.log(bol);

或者用想要的检查映射给定的数组及其子数组。

var array = [["a", "b", "c"], ["d", "e", "a"], ["1", "2", "3"], ["a", "f", "d"]],
    bol = array.map(a => a.map(v => v === 'a'));

console.log(bol);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    相关资源
    最近更新 更多