JavaScript에서 사용자 지정 반복기 인터페이스를 반복 가능하게 만드는 방법

Starlyvil

배열이 있고 기본 반복기 동작을 재정의했습니다. 문제는 재정의 한 후 반환 된 반복기가 반복 할 수 없게되고 for..of..loop가 실패하지만 배열에서 작동하지만 배열의 반복기 next () 메서드에 대한 명시 적 호출은 여전히 ​​작동한다는 것입니다. 다음은 아래 코드입니다.

let arr = ["A", "B", "C", "D", "E", "F"];
arr[Symbol.iterator] = function(){
  let i = 0;

  return {
    //Iterator interface
    next:function(){
      //IteratorResult Interface
      return {
        value: arr[i++]+"..",
        done: arr[i] == undefined?true:false
      }
    }
  }
}

그리고 여기에 반복기 객체가 있습니다.

let arrIterator = arr[Symbol.iterator](); //An iterator object returned but not iterable

반복기 객체에서 for..of..loop를 사용한 소비 시험

for (let i of arrIterator){
  console.log(i);
}

산출

반복기 결과에 대한 for..of..loop 시도

배열에서 for..of..loop를 사용한 소비 평가판

for (let i of arr){
  console.log(i);
}

산출

배열 결과에 대한 for..of..loop 시도

명시적인 next () 메서드 호출을 사용한 소비 시도

console.log(arrIterator.next());
console.log(arrIterator.next());
console.log(arrIterator.next());
console.log(arrIterator.next());
console.log(arrIterator.next());
console.log(arrIterator.next());
console.log(arrIterator.next());
console.log(arrIterator.next());

산출

반복기 결과에 대한 명시 적 next () 메서드 호출

for..of..loop 소비에 대해 사용자 지정 반복기를 반복 가능하게 만드는 방법을 정말로 알고 싶습니다 .

감사

가브리엘 페트리 올리

당신은 (뿐만 아니라의 Iterable 프로토콜을 구현해야하는 대신 반복자의 )

[Symbol.iterator]: function() { return this; }Iterator 개체에 추가 하면 작동합니다.

let arr = ["A", "B", "C", "D", "E", "F"];
arr[Symbol.iterator] = function() {
  let i = 0;

  return {
    //Iterator interface
    next: function() {
      //IteratorResult Interface
      return {
        value: arr[i++] + "..",
        done: arr[i] == undefined ? true : false
      }
    },
    // Iterable interface
    [Symbol.iterator]: function() {
      return this;
    }
  }
}

let arrIterator = arr[Symbol.iterator](); //An iterator object returned but not iterable

for (let i of arrIterator) {
  console.log(i);
}

자세한 정보는 반복 프로토콜 을 참조하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사용자 지정 개체를 반복 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

반복기를 사용하여 두 클래스에 대한 인터페이스를 구현하는 방법

분류에서Dev

반복기 인터페이스를 사용하여 다음을 얻는 방법

분류에서Dev

고급 사용자 정의 필드 반복기-순서를 반대로하는 방법 (WordPress)

분류에서Dev

부스트 반복기를 사용하는 사용자 지정 반복기

분류에서Dev

두 개의 사용자 지정 개체를 기반으로 목록에서 중복을 제거하는 방법

분류에서Dev

클래스를 반복 가능하게 만들지 만 클래스를 수정하면 반복자를 수정하지 않는 방법은 무엇입니까?

분류에서Dev

JFace 마법사에서 페이지를 반복하는 방법

분류에서Dev

파이썬에서 숫자를 반복 가능하게 만드는 방법은 무엇입니까?

분류에서Dev

ES6에서`new Function ()`인터페이스를 통해 반복 가능한`function * () {}`을 만드는 방법

분류에서Dev

사용자 정의 함수에서 반복을 방지하는 방법

분류에서Dev

for 루프를 반복하고 사용자 지정 문자열을 만드는 방법

분류에서Dev

여러 중복 열을 기반으로하는 시퀀스를 사용하여 중복 행에 자동 번호 지정 방법 (T-SQL)

분류에서Dev

터보 파스칼에서 마지막 두 번의 반복을 지정하지 않고 각 반복마다 3 개의 인덱스를 사용하는 루프를 만드는 방법은 무엇입니까?

분류에서Dev

사용자를 반복하는 방법?

분류에서Dev

Plumier에서 사용자 권한을 기반으로 재사용 가능한 사용자 지정 인증을 만드는 방법

분류에서Dev

인덱스를 사용하여 반복기 무효화 방지, 깨끗한 인터페이스 유지

분류에서Dev

노드 js에서 반복하는 방법, 각 반복까지 대기

분류에서Dev

r- dplyr을 사용하는 사용자 지정 함수에서 반복을 사용하는 방법

분류에서Dev

'찾기'또는 '제거'에서 반복자를 사용하여 지우기

분류에서Dev

함수 사용자의 반환 값을 파이썬에서 입력 가능하게 만드는 방법

분류에서Dev

사용자 지정 척도를 간단히 반복하는 방법

분류에서Dev

MXnet에서 사용자 지정 반복자를 사용할 때 테스트 세트의 레이블을 예측하는 방법은 무엇입니까?

분류에서Dev

사용자 지정 키로 배열을 반복하는 방법

분류에서Dev

JavaScript에서 텍스트 상자를 반복하는 방법

분류에서Dev

메트로 사용자 인터페이스에 반응 형 높이로 웹 페이지를 만드는 방법은 무엇입니까?

분류에서Dev

카드 한 벌의 특정 부분 (페이스 카드)에 대해서만 열거 형을 사용하여 반복하는 방법

분류에서Dev

C ++에서 반복기 만 사용하여 3D 벡터를 올바르게 반복하는 방법은 무엇입니까?

분류에서Dev

참조 numpy 코드로 루프 / 반복을 사용하는 Keras / Tensorflow에서 사용자 지정 손실 함수를 작성하는 방법

Related 관련 기사

  1. 1

    사용자 지정 개체를 반복 가능하게 만드는 방법은 무엇입니까?

  2. 2

    반복기를 사용하여 두 클래스에 대한 인터페이스를 구현하는 방법

  3. 3

    반복기 인터페이스를 사용하여 다음을 얻는 방법

  4. 4

    고급 사용자 정의 필드 반복기-순서를 반대로하는 방법 (WordPress)

  5. 5

    부스트 반복기를 사용하는 사용자 지정 반복기

  6. 6

    두 개의 사용자 지정 개체를 기반으로 목록에서 중복을 제거하는 방법

  7. 7

    클래스를 반복 가능하게 만들지 만 클래스를 수정하면 반복자를 수정하지 않는 방법은 무엇입니까?

  8. 8

    JFace 마법사에서 페이지를 반복하는 방법

  9. 9

    파이썬에서 숫자를 반복 가능하게 만드는 방법은 무엇입니까?

  10. 10

    ES6에서`new Function ()`인터페이스를 통해 반복 가능한`function * () {}`을 만드는 방법

  11. 11

    사용자 정의 함수에서 반복을 방지하는 방법

  12. 12

    for 루프를 반복하고 사용자 지정 문자열을 만드는 방법

  13. 13

    여러 중복 열을 기반으로하는 시퀀스를 사용하여 중복 행에 자동 번호 지정 방법 (T-SQL)

  14. 14

    터보 파스칼에서 마지막 두 번의 반복을 지정하지 않고 각 반복마다 3 개의 인덱스를 사용하는 루프를 만드는 방법은 무엇입니까?

  15. 15

    사용자를 반복하는 방법?

  16. 16

    Plumier에서 사용자 권한을 기반으로 재사용 가능한 사용자 지정 인증을 만드는 방법

  17. 17

    인덱스를 사용하여 반복기 무효화 방지, 깨끗한 인터페이스 유지

  18. 18

    노드 js에서 반복하는 방법, 각 반복까지 대기

  19. 19

    r- dplyr을 사용하는 사용자 지정 함수에서 반복을 사용하는 방법

  20. 20

    '찾기'또는 '제거'에서 반복자를 사용하여 지우기

  21. 21

    함수 사용자의 반환 값을 파이썬에서 입력 가능하게 만드는 방법

  22. 22

    사용자 지정 척도를 간단히 반복하는 방법

  23. 23

    MXnet에서 사용자 지정 반복자를 사용할 때 테스트 세트의 레이블을 예측하는 방법은 무엇입니까?

  24. 24

    사용자 지정 키로 배열을 반복하는 방법

  25. 25

    JavaScript에서 텍스트 상자를 반복하는 방법

  26. 26

    메트로 사용자 인터페이스에 반응 형 높이로 웹 페이지를 만드는 방법은 무엇입니까?

  27. 27

    카드 한 벌의 특정 부분 (페이스 카드)에 대해서만 열거 형을 사용하여 반복하는 방법

  28. 28

    C ++에서 반복기 만 사용하여 3D 벡터를 올바르게 반복하는 방법은 무엇입니까?

  29. 29

    참조 numpy 코드로 루프 / 반복을 사용하는 Keras / Tensorflow에서 사용자 지정 손실 함수를 작성하는 방법

뜨겁다태그

보관