Javascript for..of循环如何从数组中获取值

Javascript for..of循环如何从数组中获取值,javascript,ecmascript-6,for-of-loop,Javascript,Ecmascript 6,For Of Loop,我有这段代码, let数组=[“cj1rdd9fc00013f69ccln57g0”,“cj1rdda8x00023f69g9281ay8”]; for(让数组的[key,value]{ console.log(键、值); } of的工作方式是每次它只获取值,而不是索引 let array = ["cj1rdd9fc00013f69ccln57g0", "cj1rdda8x00023f69g9281ay8"]; for (let item of array) { console.log(it

我有这段代码,
let数组=[“cj1rdd9fc00013f69ccln57g0”,“cj1rdda8x00023f69g9281ay8”];
for(让数组的[key,value]{
console.log(键、值);
}

of的
工作方式是每次它只获取值,而不是索引

let array = ["cj1rdd9fc00013f69ccln57g0", "cj1rdda8x00023f69g9281ay8"];
for (let item of array) {
  console.log(item);
}
如果要包含索引,请参见以下问题:

of的
工作方式是每次它只获取值,而不是索引

let array = ["cj1rdd9fc00013f69ccln57g0", "cj1rdda8x00023f69g9281ay8"];
for (let item of array) {
  console.log(item);
}
如果要包含索引,请参见以下问题:


此代码,Console.log数组

let数组=[“cj1rdd9fc00013f69ccln57g0”,“cj1rdda8x00023f69g9281ay8”];
变量i,j,tempstring;

对于(i=0,j=array.length;i此代码,Console.log array

let数组=[“cj1rdd9fc00013f69ccln57g0”,“cj1rdda8x00023f69g9281ay8”];
变量i,j,tempstring;

对于(i=0,j=array.length;i让我们试着理解这里发生了什么:

根据,
for..of
为分配提供每次迭代的值

所以,当您对(数组的var v)执行
操作时,
v
将保留该值

现在,当您执行
让[key,value]
时,您使用的是一种称为

它所做的是,对于给定的变量列表,它将在相应的索引值处赋值

因此,在
中,让[a,b]=[10,20]
a=10
b=20

回到你的例子

let [key, value] of array,
被评估为
let[key,value]=“cj1rdd9fc00013f69ccln57g0”
,因此
key
在第0个索引处保留值,即a.k.a
c
和value保持
j


如何获得所需的输出

您可以使用其他循环机制,如
for
array.forEach

还有其他一些机制,如
.map
.filter
。一些
。每个
。reduce
,但它们有自己的用例,可以根据处理逻辑提出建议

数组.forEach
let数组=[“cj1rdd9fc00013f69ccln57g0”,“cj1rdda8x00023f69g9281ay8”];
forEach(函数(值、索引){
console.log(索引、值)

})
让我们试着理解这里发生了什么:

根据,
for..of
为分配提供每次迭代的值

所以,当您对(数组的var v)执行
操作时,
v
将保留该值

现在,当您执行
让[key,value]
时,您使用的是一种称为

它所做的是,对于给定的变量列表,它将在相应的索引值处赋值

因此,在
中,让[a,b]=[10,20]
a=10
b=20

回到你的例子

let [key, value] of array,
被评估为
let[key,value]=“cj1rdd9fc00013f69ccln57g0”
,因此
key
在第0个索引处保留值,即a.k.a
c
和value保持
j


如何获得所需的输出

您可以使用其他循环机制,如
for
array.forEach

还有其他一些机制,如
.map
.filter
。一些
。每个
。reduce
,但它们有自己的用例,可以根据处理逻辑提出建议

数组.forEach
let数组=[“cj1rdd9fc00013f69ccln57g0”,“cj1rdda8x00023f69g9281ay8”];
forEach(函数(值、索引){
console.log(索引、值)

})
这是一个解构赋值。这将适用于es6映射,而不适用于数组。对于数组,您可以只使用for-of循环。

这是一个解构赋值。这将适用于es6映射,而不适用于数组。对于数组,您可以只使用for-of循环。

如果您想在每次迭代中获取数组的值和索引,请在使用一些奇特的迭代时,试试这个

let array = ["cj1rdd9fc00013f69ccln57g0", "cj1rdda8x00023f69g9281ay8"];
array.map((value, index) => {
    console.log(index, key);
});

如果您想在每次迭代中使用一些奇特的迭代来获取数组的值和索引,请尝试以下方法

let array = ["cj1rdd9fc00013f69ccln57g0", "cj1rdda8x00023f69g9281ay8"];
array.map((value, index) => {
    console.log(index, key);
});

这里有一点秘密解释。

for..of
循环工作。在每次迭代中,它调用
迭代器.next().value
以获取值。标准
数组
实现有两种迭代器一种只返回值,另一种返回
[键,值]
成对。如果需要获取第二种类型的迭代器,请使用
array.entries()

下面是两种迭代器的演示:

var arr = ['a','b'];
var valueIterator = arr[Symbol.iterator]();
valueIterator.next().value; // returns a
valueIterator.next().value; // returns b

var arr = ['a','b'];
var valueKeyIterator = arr.entries();
valueKeyIterator.next().value; // returns [0, a]
valueKeyIterator.next().value; // returns [1, b]

这里有一点秘密解释。

for..of
循环工作。在每次迭代中,它调用
迭代器.next().value
以获取值。标准
数组
实现有两种迭代器一种只返回值,另一种返回
[键,值]
成对。如果需要获取第二种类型的迭代器,请使用
array.entries()

下面是两种迭代器的演示:

var arr = ['a','b'];
var valueIterator = arr[Symbol.iterator]();
valueIterator.next().value; // returns a
valueIterator.next().value; // returns b

var arr = ['a','b'];
var valueKeyIterator = arr.entries();
valueKeyIterator.next().value; // returns [0, a]
valueKeyIterator.next().value; // returns [1, b]

您得到了什么?一些错误或当前结果可能会有所帮助。@ChrisWatts OP希望
key
成为索引,
value
成为arrayRefer的元素。我发现添加array.entries()“在循环体中”可以使其正常工作。@AkhileshBhushan,请参阅以获得深入解释。您得到了什么?一些错误或当前结果会有所帮助。@ChrisWatts OP希望
key
成为索引,
value
成为arrayRefer的元素。我发现添加array.entries()在循环体中添加数组可以使其正常工作。@AkhileshBhushan,有关详细解释,请参阅。我发现在循环体中添加array.entries()可以使其正常工作。我发现添加array.entries()可以使其正常工作在循环体中可以很好地工作。非常感谢您的解释,我的用例并没有那么简单,因为我必须使用异步并在循环中等待。我知道这一点。因此我提到了其他选项。请阅读并根据您的选择