在 Javascript 中使用嵌套数组

问题描述 投票:0回答:3

我有以下代码。我只需要打印任何

Nested Arrays
.

let newArray = ["Ameen", "John", ["Working", "Studying"], [10, 100, 30, 40]];

for (let i = 0; i < newArray.length; i++) {

*// `Nested For Loop To Print The Nested Arrays`*

  for (let j = 0; j <= i; j++) {
    if (Array.isArray(newArray[i])) {
      console.log(`Nested Array ${newArray[i][j]}`);
    }
  }
}
console.log(`Whole Array: ${newArray}`);

工作正常,但是,这里的问题是

nested loop "j"
在第一个嵌套数组
["Working", "Studying"]
.

的最后一个元素之后打印“未定义”

我明白了,因为

"i"
的索引增加到
"2"
,而第一个嵌套数组
["Working", "Studying"]
只有2个元素,这意味着两个
indexes (0,1)
。因此,“j”在第一个嵌套数组中找不到带有
index of "2"
的元素。

问题是,如何使嵌套循环“j”不打印由父循环索引“i”引起的“未定义”元素?

javascript arrays nested undefined
3个回答
0
投票

在我捏了捏脑袋之后。我通过添加另一个条件找到了解决方案。即If the

newArray[i]
is an
Array
and If (this is added condition)
newArray[i][j] !== undefined
如下

for (let i = 0; i < newArray.length; i++) {
  for (let j = 0; j <= i; j++) {
    if (Array.isArray(newArray[i]) && newArray[i][j] !== undefined) {
      console.log(`Nested Array ${newArray[i][j]}`);
    }
  }
}

如我所愿。但是,我想知道是否有另一种方法可以实现这一目标。 感谢您的合作。


0
投票

立即想到的一个解决方案可以防止第二次不必要的循环:

    for (let i = 0; i < newArray.length; ++i) {
        if(Array.isArray(newArray[i])) {
            for (let j = 0; j < newArray[i].length; ++j) {
                if (newArray[i][j] != undefined) {
                    console.log(`Nested Array ${newArray[i][j]}`);
                }
            }
        }
    }
    console.log(`Whole Array: ${newArray}`);

0
投票

我认为可以通过执行以下操作来简化

const nestedArrayItems = newArray.filter(item => Array.isArray(item)).flat()
nestedArrays.forEach(nestedArray => console.log(nestedArray))
© www.soinside.com 2019 - 2024. All rights reserved.