15 Iterator 와 for 방법
스 트 리밍 기 는 본질 적 으로 포인터 대상 이다.
[Symbol.iterator]
for of
에 인터페이스 제공 next
방법 은 데이터 구조의 첫 번 째 구성원 에 게 지침 을 가리 킬 수 있다.데이터 구 조 를 되 돌려 주 는 현재 구성원 은 구체 적 으로 value
과 done
을 포함 하 는 대상 이다.next
방법 을 계속 호출 하여 데이터 구조의 끝 위 치 를 가리 킬 때 까지 대상 에 Iterator 인터페이스 가 없습니다.
Iterator
인 터 페 이 스 를 갖 추 지 못 하고 [Symbol.iterator]
에 배치 해 야 한다.생 성 된 모든 형식 은 [key,val]
// Iterator
let obj = {
0:'y',
1: 'f',
length: 2,
[Symbol.iterator]() {
const self = this;
let index = 0;
return {
next() {
if (index < self.length) {
return {
value: [index,self[index++]],
done: false
};
} else {
return { value: undefined, done: true };
}
}
};
}
};
// Object
Object.prototype[Symbol.iterator] = function () {
}
스 트 리밍 기 를 통 해 포인터 구 조 를 실현 하 는 예
//
//
function Obj(value) {
this.value =value;
this.next = null;
}
//
Obj.prototype[Symbol.iterator] = function () {
var iterator = { next: next };
var current = this;
function next() {
if (current) {
val value = current.value;
current = current.next;
return { done: false, value: value }
} else {
return { done: true }
}
}
return iterator;
}
var one = new Obj(1);
var two = new Obj(2);
var three = new Obj(3);
one.next = two;
two.next = three;
for (var i of one) {
console.log(i);
}
Iterator 생 성 방식
var arr = [1,2,3];
var iterator = arr[Symbol.iterator]();
기본 호출
Iterator
인터페이스의 경우Set
재 구성 을 재 구성 할 때 ...
확장 연산 자 사용 yield*
for of
Array.from()
Map()
Set()
WeakMap()
WeakSet()
Promise.all()
Promise.race()
//
let set = new Set().add('a').add('b').add('c');
let [x,y] = set;
문자열 의
Iterator
인터페이스//
var str = 'hi';
var iterator = str[Symbol.iterator]();
iterator.next() // { value: "h", done: false }
iterator.next() // { value: "i", done: false }
iterator.next() // { value: undefined, done: true }
옮 겨 다 니 는 대상 의 return (), throw ()
for of
에서 사용 break
또는 continue
미리 종료, 호출 return
방법// , next
// throw return
function ite() {
return {
next() {
return {done: false}
},
return() {
file.close();
return { done: true }
}
}
}
// throw
for of
순환배열
// for in , ,
var arr = [7,9,0];
arr.foo = 'bar';
for (let i in arr) {
console.log(i); // '0','1','2','foo'
}
// for of
for (let i of arr) {
console.log(i); // '7','9','0'
}
Set 와 Map 재 구성
계산 생 성 된 데이터 구조
배열, Set, Map 은 다음 세 가지 방법 을 배 치 했 습 니 다. 이 방법 들 은 모두 옮 겨 다 니 는 대상 으로 돌아 갑 니 다.
entries()
keys()
values()
배열 과 유사 한 대상
모든 유사 한 배열 의 대상 이 Iterator 인터페이스 가 있 는 것 은 아니다.
Array.from
를 사용 하여 배열 로 바 꾸 고 다시 사용 할 수 있다 for of
방법대상
일반 대상 은 직접 사용 할 수 없 음
for of
, 잘못 신고 할 수 있 습 니 다.해결 방법:Object.keys()
대상 속성 값 으로 구 성 된 배열 을 만 들 고 사용 for of
Generator
대상 을 포장 [Symbol.iterator]
할 수도 있 고 대상 원형 체인 에 배치 [Symbol.iterator]
할 수도 있다.클래스 배열 대상 [Symbol.iterator]
과 일반 대상 [Symbol.iterator]
을 배치 하 는 방법 이 다르다 // Generator
function* entries(obj) {
// Object.keys for in
for (let key of Object.keys(obj)) {
yield [key, obj[key]];
}
}
for (let [key, value] of entries(obj)) {
console.log(key, '->', value);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.