자바스크립트 배열에 대한 흥미로운 점
2603 단어 nodejavascriptbeginners
자바스크립트 배열은 객체일 뿐입니다.
let arr = [1, 2, 3];
let arr2 = {
'0': 1,
'1': 2,
'2': 3
}
유일한 차이점은 arr이 Array 프로토타입에서 상속하므로 모든 배열 메서드(map, reduce 등...)와 length 속성이 있다는 것입니다.
새 속성을 만들 수 있습니다.
배열은 객체일 뿐이므로 다른 언어의 배열과 비교할 때 속도가 느리고 새 속성을 만들 수 있습니다.
arr.total = function() {
return this.reduce((acc, i) => acc + i, 0)
}
console.log(arr.total()); // 10
길이가 반드시 길이는 아니다
그것은 단지 마지막 요소 인덱스 + 1입니다.
let countries = [];
countries[1000] = 'Brazil';
console.log(arr.length); // 1001 🤷
길이를 직접 변경할 수 있습니다.
길이를 변경하는 것만으로 배열의 요소를 제거할 수 있습니다.
let arr = [1, 2, 3, 4, 5];
arr.length = 3;
console.log(arr); // [1, 2, 3]
어레이의 길이를 변경하여 새 슬롯을 추가할 수도 있습니다.
let arr = [1, 2, 3, 4];
arr.length = 100;
console.log(arr); // [1, 2, 3, 4, 96 empty items]
범위를 벗어난 색인 오류가 없습니다.
자바 스크립트에 색인 초과 오류가 없으며 초기화되지 않았거나 존재하지 않는 색인은 정의되지 않은 값을 반환합니다.
let arr = [1, 2, 3];
console.log(arr[999]); // undefined
지도는 빈 항목에 대해 호출되지 않습니다
Map, Filter, Reduce 등은 빈(초기화되지 않은) 항목에서 작동하지 않습니다.
let arr = Array(5); // [5 empty items]
arr = arr.map(() => 1);
console.log(arr); // [5 empty items]
비어 있음 !== 정의되지 않음
비어 있음은 정의되지 않은 것과 같지 않습니다. 즉, 정의되지 않은 항목이 있는 인덱스는 비어 있지 않습니다.
let arr = [undefined, undefined];
arr = arr.map(() => 1);
console.log(arr); // [1, 1]
그러나 빈 항목을 쿼리하면 반환된 값은 항상 정의되지 않습니다.
let arr = new Array(3);
console.log(arr[2]); // undefined
항목 초기화
Array.from으로 모든 객체를 초기화할 수 있습니다.
let arr = Array.from(Array(10));
arr = arr.map(() => 1); // map will work now
// Array.from can receive a second argument that is a map
let arr = Array.from(Array(10), () => 1);
console.log(arr); // same result as above without creating the intermediate array
자바스크립트 배열에 대한 더 흥미로운 사실이 있다면 댓글을 남겨주세요 :)
Reference
이 문제에 관하여(자바스크립트 배열에 대한 흥미로운 점), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/____marcell/interesting-things-about-javascript-arrays-553d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)