在javascript中通过多维数组循环跳过数据?

在javascript中通过多维数组循环跳过数据?,javascript,Javascript,我有以下数组: let array = [1, 2, 3, [(4, 5, [(6, 7, 8)], 9, [10])]]; 我使用递归来循环并将其缩减为单个数组 首先,我只想console.log(array)在for循环中。所以代码是: function reduceArray(array) { for (let i = 0; i < array.length; i++) { console.log(array[i]) } } 我反而得到: 1 2 3 [10]

我有以下数组:

let array = [1, 2, 3, [(4, 5, [(6, 7, 8)], 9, [10])]];
我使用递归来循环并将其缩减为单个数组

首先,我只想
console.log(array)
for
循环中。所以代码是:

function reduceArray(array) {
  for (let i = 0; i < array.length; i++) {
    console.log(array[i])
  }
}
我反而得到:

1
2
3
[10]
这里发生了什么?

你有paren
()
,你似乎认为它们什么都不做,但它们在JS和大多数语言中确实有意义。这里,
()
的意思是
被解释为逗号运算符,而不是数组的分隔符

  • 3
    的计算结果为
    3
    ,非常简单
  • [3,4]
    解释为数组分隔符,并计算为包含2个元素的数组
  • (x(),3,5)
    解释为逗号运算符,并计算为
    5
    ,但也调用
    x()
    ,这可能会产生副作用
  • [3,(x(),6)]
    将第一个
    解释为数组分隔符,将第二个
    解释为逗号运算符,计算结果为
    [3,6]
    ,但也调用
    x()
下面是另一个例子:

设y=10;
让incY=()=>y++;

log((incY(),incY(),y))数组初始值设定项不正确;
()
是多余的。它们被解释为带有逗号运算符的表达式。多余意味着它们没有意义,但这是不正确的。@junvar是的,我正在验证它是否在做我认为它是做的:)我有一种感觉与之有关,但我的编辑器(VS)上有一个代码简化器(缺少更好的术语)插件它会自动设置这些括号。也许是时候换一种了。
1
2
3
[10]