자바스크립트 완벽가이드 7장에 해당하는 부분이고, 읽으면서 자바스크립트에 대해 새롭게 알게된 부분만 정리한 내용입니다.
이 Array.from()이 중요한 이유는 배열 비슷한 객체를 진정한 배열로 바꾸는 방법이기 때문이다.
const truearray = Array.from(arraylike);
배열 순회시, forEach()
메서드는 for/of
루프와 달리 성긴 배열을 인식하고 존재하지 않는 요소에 대해서는 함수를 호출하지 않는다. filter()
와 map()
또한 성긴배열에 대해서는 함수를 호출하지 않는다.
성긴 배열이란?
→ 밀집 배열이 아닌 중간중간 요소가 비어있는 배열
const a = [1, 2, 3];
delete a[1];
a.forEach(n => console.log(n)); // 1, 3
copyWithin()
이는 배열의 슬라이스를 복사해 새 위치에 붙여넣는다.
첫 번째 인자는 첫 번째 요소가 복사될 위치의 인덱스이다.
두 번째 인사는 복사할 첫 번째 요소의 인덱스이다.
세 번째 인자는 복사할 슬라이스의 끝을 지정한다.
const a = [1, 2, 3, 4, 5];
// 전체를 복사해 인덱스 1에 덮어쓴다.
a.copyWithin(1); // [1, 1, 2, 3, 4]
// 마지막 두 개를 복사해 인덱스 2에 덮어쓴다.
a.copyWithin(2, 3, 5); // [1, 1, 3, 4, 4]
// 음수도 잘 동작한다
a.copyWithin(0, -2); // [4, 4, 3, 4, 4]
indexof()와 includes()의 차이
indexOf()
는 === 연산자를 사용해 인자와 배열 요소를 비교하며, 이 알고리즘은 NaN을 자기 자신을 포함해 어떤 값과도 다르다고 판단한다.
includes()
는 NaN이 자기 자신과는 일치한다고 판단하는 조금 다른 알고리즘을 사용한다.
const a = [1, true, NaN];
console.log(a.includes(true)); // true
console.log(a.includes(2)); // false
console.log(a.includes(NaN)); // true
console.log(a.indexOf(NaN)); // -1