Note > 자바스크립트 관련유사배열By a3040, Published on Invalid Date
유사배열은 실제 배열은 아니지만 배열과 유사한 동작을 하는 객체를 나타냅니다.
유사배열 객체는 다음 특징을 가집니다:
1.인덱스를 사용하여 요소에 접근할 수 있어야합니다.
2.length 속성을 가지고 있어서 요소의 개수를 알 수 있어야합니다.
3.반복 가능(iterable)하므로 for...of 루프나 forEach와 같은 반복 메서드를 사용할 수 있습니다.
4.Array객체가 아니어서 .map등 사용이 안됩니다. Array 객체로 변환 후 사용해야합니다.
대표적 예시 : 문자열(String), 함수 인자(arguments), NodeList, TypedArray
//문자열(String): //문자열은 각 문자에 대한 인덱스로 접근할 수 있으며 length 속성이 있습니다.
const str = "Hello";
console.log(str[0]); // "H"
console.log(str.length); // 5
//arguments는 함수라면 처음부터 갖고 있는 숨겨진 속성입니다.
function example() {
console.log(arguments[0]);// 1
console.log(arguments.length);// 3
}
example(1, 2, 3);
const elements = document.querySelectorAll("div");
console.log(elements[0]); // 첫 번째 div 요소
console.log(elements.length); // 요소의 개수
//TypedArray: Uint8Array, Int32Array와 같은 TypedArray 객체도 유사 배열입니다.
const uint8Array = new Uint8Array([1, 2, 3]);
console.log(uint8Array[0]); // 1
console.log(uint8Array.length); // 3
제너레이터(generator) 객체는 유사 배열이 아닙니다.
제너레이터 객체는 반복 가능한(iterable) 객체로, next() 메서드를 사용하여 값을 순차적으로 생성하고 반환하는 객체입니다.
function* gen(from=0, to=10, step=1){
for( let i=from; i<to; i+=step)
yield i;
}
const x = gen();
try{
console.log( x.join(',') )
}catch(e){
console.error('gen은 generator객체여서 join안됨', e);
}
console.log( x[3] ); //undefined , next()로 접근
console.log(Array.prototype.join.call([...x], '|'));