from()

  • 새로운 Array 오브젝트 생성, 반환

  • 콜백함수에서 반환된 값을 엘리먼트에 설정

  • 두번째 파라미터는 선택으로 함수작성

    • 첫번째 파라미터의 이터러블 오브젝트를 전개할 때마다 호출
  • 세번째 파라미터 선택

    • 호출된함수에서 this로 참조할 오브젝트
  • let arrayLike = {0: “zero”, 1: “one”, length :2 };

  • let arrayObj = Array.from(arrayLike);

  • [“zero”,”one”]

of()

  • Array 인스턴스를 생성하여 반환

    • 파라미터 값을 생성한 배열에 설정

    • 콤마로 구분하여 다수 작성 가능

  • let list = Array.of()

copyWithin()

  • 지정한 인덱스 범위를 복사하여 같은 배열의 첫 번째 파라미터 인덱스에 설정

  • 복사기준

    • 두번째 파라미터 인덱스 부터

    • 세번째 파라미터 인덱스 직전까지 복사

fill()

인덱스 범위의 값을 지정한 값으로 바꾸어 반환

entries()

  • Array로 이터레이터 오브젝트를 생성하여 반환

  • Array는 이터러블 오브젝트 지만

    • 이터레이터 오브젝트는 아님, next() 사용 불가

    • 이터레이터 오브젝트는 key : value 형태

  • 배열 인덱스가 key가 되고 값이 value

  • let values = [ 1 , 2, 3]

  • let ite = values.entries()

  • ite.next() // 2

for (let [key,value] of ite) {

}

key()

  • Array로 이터레이터 오브젝트를 생성하여 반환

  • 이터레이터 오브젝트에 key만 존재

    • 배열 인덱스가 key 값이 됨

    • 배열 엘리먼트 값(value)은 이터레이터에 포함되지 않음

values()

  • Array로 이터레이터 오브젝트를 생성하여 반환

  • 이터레이터 오브젝트는 values만가짐

  • 크롬 51/50 에서 실행 52 에러

find()

  • 콜백 함수에서 처리중인 값반환

  • find 방법

    • 배열 엘리먼트를 하나씩 읽어가면서 콜백 함수 호출

    • 콜백 함수에서 true를 반환하면 find() 종료

    • 이때 처리중인 엘리먼트 값 반환

    • 배열 끝까지 true를 반환 하지 않으면 undefined

  • 배열 엘리먼트 , 인덱스, 배열전체

  • let result = [1,2,3].find(value, index, allData) => value === 2 );

  • //2

function* 함수

yield

제네레이터 함수

prototype: Generator

__proto__ : Generator

constructor : GeneratorFunction

next: function next()

return: function return()

throw: function throw()

let getConst = Object.getPrototypeOf(function *(){}).constructor;

제네레이터 오브젝트 생성

  • prototype에 연결되어 있는 constructor 반환

  • 따라서 getConst는 생성자 함수가 됨

yield

  • [returnValue] = yield[expression]

  • result = yield 10 + 20

  • yield 키워드

    • 제너레이터 함수를 멈추거나 재실행 기준으로 사용

    • 오른쪽의 표현식을 평가하여 결과 반환

    • 표현식을 작성하지 않으면 undefined 반환

  • [returnValue]

    • 오른쪽의 평가 결과가 설정되는 것이 아니라 다음 next()의 파라미터 값이 설정

  • yield 표현식 평가를 완료하면

  • {value: 값, done: true/false} 형태로 반환

  • value 프로퍼티 값

    • yield 푠현식의 평가 결과 설정

    • yield를 수행하지 못하면 undefined

  • done 프로퍼티 값

    • yield를 수행하면 false

function* sports(one) {

yield one;

let check 10;

}

let getObj = sports(10);

//{value:10,done:false}

//{value:10,done:true}

next()

  • 제너레이터 함수에서 yield 단위로 실행

  • next()를 호출하면

    • 파라미터 값을 yield의 왼쪽 변수에 할당

    • 앞 yield의 다음 라인 부터 yield의 표현식까지 수행

  • return 문을 만나면 done : true

  • 함수는 호출할때마다 변수에 초깃값 설정

  • 제네레이터 함수

    • 제네레이터 오브젝트를 생성할 때 초깃값 설정

    • next()로 실행될 때마다 초깃값을 설정하지 않음

// 예제

let getAmount = function*(qty,price){

let amount = Math.floor(qty * price);

let discount = yield amount;

return amount = discount;

};

let getDiscount = function*(amount){

return amount > 1000 ? amount * 0.2 : amount * 0.1;

};

let amountObj = getAmount(10,60);

let result = amountObj.next();

console.log(result);

let dcAmount = getDiscount(result.value);

console.log(dcAmount);

console.log(amountObj.next(dcAmount));

next() 다양한 형태

  • 함수에 다수의 yield를 작성하지 않고 while() 문에 yield 작성

let gen = function*(value) {

let count = 0;

while (value) {

yield ++count;

}

}

let getObj = gen(true);

  • 파라미터 값을 받을 변수가 없으면 파라미터로 넘겨준 값 반환

return()

  • 제네레이터 함수의 이터레이터를 종료시킴

  • {done:true} 반환

throw()

  • Error를 발생 시킴

  • 제네레이터 함수의 catch문에서 받아줌

yield*

yield*[[표현식]]

yield* 배열,함수

results matching ""

    No results matching ""