
자료구조에서 말하는 정석적인 배열로
JS의 배열은 일반적인 배열의 동작을 흉내낸 특수한 객체이다!
const arr1 = new Array(10); //길이가 10인 빈 배열 생성
const arr2 = Array.of(1); // [1]
const arr3 = Array.from({length: 3}, (_, i)=>i); // [0,1,2]
const result = arr.splice(시작 인덱스, 삭제 요소수, 삽입할 요소 목록..);
arr.fill(채울 값, 시작인덱스, 끝인덱스);
[1, [2, [3, [4]]]].flat(2); //[1,2,3,[4]]
[1, [2, [3, [4]]]].flat(Infinity); //[1,2,3,4]
🥋 accessor method
원본 배열을 직접 변경하지 않는 메서드.
const numbers=[1,2,3];
numbers.forEach((item, index, arr)=>{arr[index]=item**2;});
console.log(numbers) //1,4,9
👉 참고로, foreach의 return값은 언제나 undefined!
[5, 10, 15].some(item => item>10); //true
[5, 10, 15].every(item => item>3); //true
🧻 폴리필
최신 사양의 기능을 지원하지 않는 브라우저를 위해 누락된 최신기능을 구현하여 추가하는 것!
new Date(); //Date 객체
Date(); //String
const str=new String("abc");
str[0]="b"; // 문자열은 원시값이므로 변경할 수 없다. 그대로 abc
const Direction={
UP: 1,
DOWN: 2,
LEFT: 3,
RIGHT: 4
};
const myDirection = Direction.UP;
if(myDirection === Driection.UP) console.log("위로!");
🛵 지연 평가
데이터가 필요한 시점에 그제서야 데이터를 생성하는 기법.
for..of와 같은 이터러블 프로토콜은 이러한 방법을 통해 데이터를 생성한다.
불필요한 데이터를 미리 생성하지 않아 메모리 낭비가 적고, 필요한 순간에 생성하므로 빠른 실행속도를 가지는 것이 특징!
그냥 객체도 스프레드 연산자 사용 가능!
const merged= { ...{x:1, y:2}, ...{y:10, z:3} };
const arr=[1,2,3];
const [one, two, three] = arr;
const [a, b, c, d=4] = [1,2,3];
const { x, ...rest } = {x:1, y:2, z:3};
console.log(rest); //{y:2, z:3}