在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]