Javascript 在for of循环中使用进行阵列分解?
我正在试图理解以下代码?为什么我会得到以下输出Javascript 在for of循环中使用进行阵列分解?,javascript,Javascript,我正在试图理解以下代码?为什么我会得到以下输出 for(设[i,j,…x][ [2,3,4,5,10,11,12,13]。过滤器(e=>e>5) ]) { 控制台错误(x) } 首先,您需要查看[2,3,4,5,10,11,12,13].filter(e=>e>5) 返回:[10,11,12,13] 之后将应用[i,j,…x]=[10,11,12,13]。这意味着,i=10,j=11,x取其余部分,这意味着x=[12,13] 我们打印了x,瞧,这是[12,13] 但是[[10,11,12,1
for(设[i,j,…x][
[2,3,4,5,10,11,12,13]。过滤器(e=>e>5)
]) {
控制台错误(x)
}
首先,您需要查看[2,3,4,5,10,11,12,13].filter(e=>e>5)
返回:[10,11,12,13]
之后将应用[i,j,…x]=[10,11,12,13]
。这意味着,i=10
,j=11
,x取其余部分,这意味着x=[12,13]
我们打印了x
,瞧,这是[12,13]
但是
[[10,11,12,13]
呢?首先请参见下面的代码段:
让[k,l,…y]=[2,3,4,5,10,11,12,13]
控制台日志(k、l、y)
让[i,j,…x]=[2,3,4,5,10,11,12,13]]
log(i,j,x)
您只需删除i,j
for(让[…x]为[
[2,3,4,5,10,11,12,13]。过滤器(e=>e>5)
]) {
控制台错误(x)
}
如果要获取大于5的数字,可以使用此代码
for (let [i, j, ...x] of [
[2, 3, 4, 5, 10, 11, 12, 13].filter(e => e > 5)
]) {
console.error(x)
}
var numberArray= [2, 3, 4, 5, 10, 11, 12, 13];
var numberBiggerThanFive = [];
for(i in numberArray){
if(i > 5 ){
numberBiggerThanFive.push(i)
}
}
console.log(numberBiggerThanFive);
i
是10,j
是11,x
保留其余部分,因此[12,13]
。只需运行我答案的片段。这种情况下的for..of循环使用多个迭代变量。因此,它将从数组中获取许多元素。在第一个循环中,数组的第一个元素将分配给i,第二个元素分配给j,所有其他元素分配给x。循环将在这里结束,因为“…x”已经占用了所有剩余的元素,并且没有留下任何内容。当然,在初始数组中使用filter只会留下四个元素[10,11,12,13]。所以:x是10,j是11,x是[12,13]。编辑:播放一点代码。永远只有一次迭代,即使没有“…x”变量。@briosheje,我添加了一个解释!之后,将应用[10,11,12,13]中的[i,j,…x]。我将更改为:[I,j,…x]=[10,11,12,13]
。“of”是误导性的,因为在该上下文中,of
需要一个迭代器,这当然是可以找到的,但会引发异常。这是一个赋值,对[10,11,12,13]使用for..of会引起一个TypeError:)。不管怎么说,添加更多解释做得很好,这是所需的高质量答案。更改它,感谢您的提示和友好的话语!
for (let [i, j, ...x] of [
[2, 3, 4, 5, 10, 11, 12, 13].filter(e => e > 5)
]) {
console.error(x)
}
var numberArray= [2, 3, 4, 5, 10, 11, 12, 13];
var numberBiggerThanFive = [];
for(i in numberArray){
if(i > 5 ){
numberBiggerThanFive.push(i)
}
}
console.log(numberBiggerThanFive);