[ECMAScript 5 6 7] 11, ES6 - Ietetator 달력
3475 단어 고급ECMAScript
iterator 는 일종 의 인터페이스 메커니즘 으로 각종 서로 다른 데이터 구조 에 통 일 된 접근 메커니즘 을 제공한다
역할:
1. 각종 데이터 구 조 를 위해 통일 되 고 간편 한 방문 인 터 페 이 스 를 제공한다.2. 데이터 구조의 구성원 들 이 특정한 순서에 따라 배열 할 수 있 도록 3. ES6 는 새로운 옮 겨 다 니 는 명령 for... of 순환 을 만 들 었 고 Iterator 인 터 페 이 스 는 주로 for... of 소 비 를 제공 합 니 다.
작업 원리:
- ( ), 。
- next ,
- next , ,
- next value done ,{value: ,done: }
* value ,done , done false
* value undefined,done true
원생 iterator 인 터 페 이 스 를 갖 춘 데이터 (for of 옮 겨 다 닐 수 있 음):
1、Array
2、arguments
3、set
4、map
5、String
。。。
Iterator
// Iterator
function myIterator(arr) {
let index = 0 //
return { //
next:function () { // next
return index<arr.length ? {value:arr[index++],done:false} : {value:undefined,done:true} // done
}
}
}
let arr = [1,40,'abc',true]
const it = myIterator(arr) // , ,
console.log(it.next()) // {value: 1, done: false}
console.log(it.next()) // {value: 40, done: false}
console.log(it.next()) // {value: "abc", done: false}
console.log(it.next()) // {value: true, done: false}
console.log(it.next()) // {value: undefined, done: true}
console.log('----------------------')
// ES6 Iterator , for of
// 、 、arguments、set 、map
for(let i of arr){
console.log(i) // 1 40 abc true
}
let str = 'ondean'
for(let i of str){
console.log(i) // o n e d e a n
}
function fun() {
for(let i of arguments){
console.log(i) // 100 200 false 'china'
}
}
fun(100,200,false,'china')
console.log('----------------------')
/*
:
Symbol.iterator , , Iterator
for of , Symbol.iterator, , xxx is not iterator
*/
/*let obj = {
[Symbol.iterator]: function () {
let index = 0
return { //
next:function () { // next
return index<this.length ? {value:this[index++],done:false} : {value:undefined,done:true} // done
}
}
}
}*/
// : for...of Iterator , Symbol.iterator ( )
class RangeIterator {
constructor(start, stop) {
this.value = start;
this.stop = stop;
}
[Symbol.iterator]() { return this; }
next() {
var value = this.value;
if (value < this.stop) {
this.value++;
return {done: false, value: value};
}
return {done: true, value: undefined};
}
}
function range(start, stop) {
return new RangeIterator(start, stop);
}
for (var value of range(0, 3)) {
console.log(value); // 0, 1, 2
}
console.log('----------------------')
// 、 Iterator
let arr2 = [1,6]
let arr3 = [2,3,4,5]
arr2 = [1,...arr3,6]
console.log(arr2) // (6) [1, 2, 3, 4, 5, 6]
let [x,y] = arr2
console.log(x,y) // 1 2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[ECMAScript 5 6 7] 11, ES6 - Ietetator 달력개념: iterator 는 일종 의 인터페이스 메커니즘 으로 각종 서로 다른 데이터 구조 에 통 일 된 접근 메커니즘 을 제공한다 역할: 1. 각종 데이터 구 조 를 위해 통일 되 고 간편 한 방문 인 터 페 이 스...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.