给定for循环,赋值变量的值(本例中为i
)等于array[i]
等于循环的正常值。如何访问当前使用i
的数组的索引。
我想要什么
let array = ["one", "two", "three"];
for (let i of array) {
console.log(i);// normally logs cycle one : "one", cycle two : "two", cycle three : "three".
console.log(/*what equals the current index*/);// what I want to log cycle one : 1, cycle two : 2, cycle three : 3.
}
答案 0 :(得分:22)
您可以使用entries功能。它将为数组中的每个条目返回一个索引/值对,如:
[0, "one"]
[1, "two"]
[2, "three"]
与array destructuring一起使用此方法将每个条目解析为相应的变量名称:
const arr = ["one", "two", "three"]
for(const [index, value] of arr.entries()) {
console.log(index, value);
}
答案 1 :(得分:14)
forEach
,例如
array.forEach(function(item, index) {
...
});
或作为T.J. Crowder指针退出(我错过了ES6标签)
array.forEach((item, index) => {
...
});
像许多编程语言一样,javascript有多种方法可以做类似的事情,技巧是为工作选择合适的工具
答案 2 :(得分:5)
你是说这个?
array = ["one", "two", "three"];
for (i = 0; i < array.length; i++) {
console.log(i); // Logs the current index number;
console.log(array[i]); // Logs the index matching in the array;
}
来自comment的好Kaiido是你可以使用它来直接从数组中获取值作为变量。
for (var ind = 0, i=array[ind]; ind < array.length; i=array[++ind]) {
console.log(i);
console.log(ind);
}
答案 3 :(得分:3)
您可以使用entries()
函数来获取包含索引的迭代器。
for (let [index, value] of [1, 2, 3].entries())
console.log(index + ':' + value);
或者,如果您不喜欢let [,]
符号:
for (let entry of [1, 2, 3].entries())
console.log(entry[0]+ ':' + entry[1]);
但其他阵列喜欢怎么样?好吧,你可以轻松地自己照顾它,真的
let index = 0;
for (let ch of 'abcd') {
++index;
//your code
}
或者,您可以非常轻松地patch in自己的实施
Object.defineProperty(String.prototype, 'indexerator', {get:function() {
var elements = this[Symbol.iterator]();
var index = 0;
var output;
return {
[Symbol.iterator] : function() { return this; },
next : function() {
if (!(output = elements.next()).done)
output.value = [index++, output.value];
return output;
}
};
}});
/*other code*/
for (let [index, ch] of 'abcd'.indexerator)
console.log(index + ':' + ch);
<子> demonstrations 子>
答案 4 :(得分:1)
使用indexOf
获取索引
let array = ["one", "two", "three"];
for (let i of array) {
console.log(i);
console.log(array.indexOf(i));
}
注意:仅适用于没有重复项的数组。
答案 5 :(得分:0)
或
array = ["one", "two", "three"];
for (i = 0, item; item=array[i]; i++) {
console.log(i); // Logs the current index number;
console.log(item); // Logs the current item in the array;
}