답변:
for (const index of [1, 2, 3, 4, 5].keys()) {
console.log(index);
}
키와 값 모두에 액세스하려면 다음 Array.prototype.entries()
과 같이 구조화 하여 사용할 수 있습니다 .
for (const [index, value] of [1, 2, 3, 4, 5].entries()) {
console.log(index, value);
}
yield
키워드에 대한 범위 문제를 생성하므로 forEach를 사용할 수 없습니다 . 그러나 유스 케이스에 대한 색인에 액세스해야하므로 기본 오래된 ;;
루프입니다.
.entires()
입니까?
Array#entries
둘 다 필요한 경우 인덱스와 값을 반환합니다.
for (let [index, value] of array.entries()) {
}
document.styleSheets[0].cssRules.entries()
또는 document.styleSheets.entries()
아마도 오류를 던집니다 . 아직 사용해야 _.forEach()
에서lodash
for (var value of document.styleSheets) {}
. 인덱스를해야하는 경우 당신은을 통해 먼저 배열에 값을 변환 할 수 있습니다 Array.from
: for (let [index, value] of Array.from(document.styleSheets)) {}
.
Array.from
FTW
화려하고 새로운 기본 기능의 세계에서 우리는 때로는 기본 사항을 잊어 버립니다.
for (let i = 0; i < arr.length; i++) {
console.log('index:', i, 'element:', arr[i]);
}
깨끗하고 효율적이며 여전히 break
루프를 수행 할 수 있습니다 . 보너스! 또한 끝에서 시작하여 i--
!
추가 참고 사항 : 루프 내에서 값을 많이 사용하는 const value = arr[i];
경우 쉽고 읽기 쉬운 참조를 위해 루프 상단에서 수행 할 수 있습니다 .
break
for-of
for (let [index, value] of array.entries())
.reverse()
html / js 컨텍스트, 최신 브라우저에서 Arrays 이외의 반복 가능한 객체와 함께 [Iterable] .entries ()를 사용할 수도 있습니다.
for(let [index, element] of document.querySelectorAll('div').entries()) {
element.innerHTML = '#' + index
}
entries
메소드 가없는 객체를 반환 합니다.
A의 for..of
루프 우리는이를 통해 달성 할 수있다 array.entries()
. array.entries
새로운 Array 반복자 객체를 반환합니다. 반복자 객체는 해당 시퀀스 내에서 현재 위치를 추적하면서 한 번에 반복 가능한 항목에서 항목에 액세스하는 방법을 알고 있습니다.
next()
이터레이터 에서 메소드가 호출 되면 키 값 쌍이 생성됩니다. 이러한 키 값 쌍에서 배열 인덱스 는 키이고 배열 항목은 값입니다.
let arr = ['a', 'b', 'c'];
let iterator = arr.entries();
console.log(iterator.next().value); // [0, 'a']
console.log(iterator.next().value); // [1, 'b']
for..of
루프는 기본적으로 반복 가능한 소비하고 (후드 반복기를 사용하는) 모든 요소를 순환 구성체이다. 우리는 이것을 array.entries()
다음과 같은 방식으로 결합 할 수 있습니다 :
array = ['a', 'b', 'c'];
for (let indexValue of array.entries()) {
console.log(indexValue);
}
// we can use array destructuring to conveniently
// store the index and value in variables
for (let [index, value] of array.entries()) {
console.log(index, value);
}
당신은 필요한 경우는 인덱스를 직접 처리 할 수있는 인덱스를 , 당신은 필요가 작동하는지 키를 .
let i = 0;
for (const item of iterableItems) {
// do something with index
console.log(i);
i++;
}
Array
배열과 같거나 배열 이 아닌 객체를 사용하는 사람들은 자신 만의 iterable을 쉽게 빌드 할 수 있으므로 실제로 다음 for of
과 같은 것들 localStorage
에만 사용할 수 있습니다 length
.
function indexerator(length) {
var output = new Object();
var index = 0;
output[Symbol.iterator] = function() {
return {next:function() {
return (index < length) ? {value:index++} : {done:true};
}};
};
return output;
}
그런 다음 숫자를 먹이십시오.
for (let index of indexerator(localStorage.length))
console.log(localStorage.key(index))
es6 for...in
for(const index in [15, 64, 78]) {
console.log(index);
}
for...of
루프 에 대한 질문이 아니라for...in
var fruits = ["apple","pear","peach"];
for (fruit of fruits) {
console.log(fruits.indexOf(fruit));
//it shows the index of every fruit from fruits
}
for 루프는 배열을 순회하지만 indexof 속성은 배열과 일치하는 인덱스 값을 가져옵니다. PD이 방법에는 몇 가지 결함이 있으므로 과일을 사용하십시오.
["apple", "apple", "pear"]
지정된 색인의 경우 0, 0, 2
대신입니다 0, 1, 2
.
for-of
를.entries()
했는데에 비해 두 배 느립니다.forEach()
. jsperf.com/for-of-vs-foreach-with-index