lang/js

ECMA6 배열생성

C/H 2019. 6. 4. 08:30

배열 만들기, 배열 생성

Array.of() 메서드

 // new Array()
let items = new Array(2);
console.log(items.length);    // 2
console.log(items[0]);        // undefined
console.log(items[1]);        // undefined

items = new Array("2");
console.log(items.length);    // 1
console.log(items[0]);        // "2"

let items = new Array(1, 2);
console.log(items.length);    // 2
console.log(items[0]);        // 1
console.log(items[1]);        // 2

let items = new Array(3, "2");
console.log(items.length);    // 2
console.log(items[0]);        // 3
console.log(items[1]);        // "2"
// Array.of() // 인자에 배열값을 입력한다.
let items = Array.of(1, 2);
console.log(items.length);    // 2
console.log(items[0]);        // 1
console.log(items[1]);        // 2

items = Array.of(2);
console.log(items.length);    // 1
console.log(items[0]);        // 2

items = Array.of("2");
console.log(items.length);    // 1
console.log(items[0]);        // "2"

Array.from()

ECMASCript 5에서 유사 배열 객체를 배열로 변환하기 위해서는 아래 처럼 함수를 작성해서 사용했다.

function makeArray(arrayLike) {
  var result = [];
  
  for(var i = 0, len = arrayLike.length; i < len; i++){
    result.push(arrayLike[i]);
  }

  return result;
}

function doSomehting(){
  var args = makeArray(argements);

  // args 변수 사용
}
function doSomehting(){
  var args = Array.from(argements);   // 첫번째 인자로 이터러블이나 유사 배열 객체를 전달하면 배열을 반환한다.

  // args 변수 사용
}

매핑함수

function translate(){
  return Array.from(argements, (value) => value + 1);
}

let numbers = translate(1, 2, 3);

console.log(numbers);

this를 나타내는 세번째 인자

let helper = {
  diff: 1,

  add(value) {
    return value + this.diff;
  }
};

function translate(){
  return Array.from(argements, helper.add, helper);
}

let numbers = translate(1, 2, 3);

console.log(numbers);             // 2,3,4

이터러블에서 동작

let number = {
  *[Symbol.iterator]() {
    yield 1;
    yield 2;
    yield 3;
  }
};

let numbers2 = Array.from(numbers, (value) => value + 1);

console.log(numbers);             // 2,3,4
반응형

'lang > js' 카테고리의 다른 글

ECMA6 타입배열  (0) 2019.06.07
ECMA6 새로운 메서드  (0) 2019.06.05
ECMA6 WeakSet  (0) 2019.05.22
ECMA6 Set  (0) 2019.05.21
ECMA6 function define  (0) 2019.05.20