Preface
배열은 선형적으로 할당된 메모리 조각으로, 정수를 통해 오프셋을 계산하여 요소에 액세스합니다. 배열은 매우 빠른 데이터 구조일 수 있습니다. 하지만 자바스크립트는 이러한 배열과 같은 데이터 구조 대신 배열과 유사한 속성을 가진 객체를 제공합니다. 배열의 첨자를 문자열로 변환하고 이를 프로퍼티로 사용합니다.
배열 리터럴
배열 리터럴은 새 배열을 만들 때 매우 편리한 표현식을 제공합니다. 배열 리터럴은 한 쌍의 대괄호로 묶인 0개 이상의 쉼표로 구분된 값을 가진 표현식으로, 배열의 첫 번째 값은 속성 이름 '0', 두 번째 값은 속성 이름 '1' 등의 값을 갖습니다.
var empty=[]
var numbers=[0,1,2,3,4,5,6,7,8,9]
empty[1] //undefined
numbers[1] //1
대부분의 언어에서 배열의 모든 요소는 같은 유형이어야 하지만, 자바스크립트는 배열에 어떤 유형의 혼합 값도 포함할 수 있도록 허용합니다:
var arr = ['string',9,true,null,undefined,[1,2],{key:value},NaN,Infinity]
arr.length //9
배열의 길이
모든 배열에는 길이 속성이 있습니다. 대부분의 다른 언어와 달리 자바스크립트 배열에는 길이 상한이 없습니다. 현재 길이보다 크거나 같은 숫자를 가진 요소를 아래 첨자로 저장하면 새 요소를 수용하기 위해 길이가 증가합니다. 배열 경계 오류가 발생하지 않습니다.
길이 속성의 값은 배열의 가장 큰 정수 속성 이름 + 1이며, 배열의 속성 수와 반드시 같을 필요는 없습니다.
var arr =[]
arr.length //0
arr =true
arr.length //1001
길이 값을 직접 설정할 수 있습니다. 길이 값을 더 크게 설정해도 배열에 더 많은 공간을 할당할 필요가 없습니다. 길이를 더 작게 설정하면 새 길이보다 크거나 같은 첨자가 있는 모든 프로퍼티가 삭제됩니다.
numbers.length = 3
//numbers [0,1,2]
아래 첨자를 해당 배열의 현재 길이로 지정하여 배열의 끝에 새 요소를 추가할 수 있습니다.
numbers[numbers.length] = 4
//numbers [0,1,2,4]
배열용 메서드
자바스크립트는 배열을 보다 쉽고 효율적으로 작업하고 조작할 수 있는 여러 가지 강력한 배열 메서드를 제공합니다. 배열에서 일반적으로 사용되는 메서드는 다음과 같습니다.
concat()메서드
concat() 메서드는 두 개 이상의 배열을 연결하여 새 배열을 반환하는 데 사용됩니다. 이 메서드는 기존 배열을 변경하지 않고 병합된 새 배열을 반환합니다.
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const newArr = arr1.concat(arr2);
console.log(newArr); // [1, 2, 3, 4, 5, 6]
join()메서드
join() 메서드는 배열의 모든 요소를 단일 문자열로 조인합니다. 조인 프로세스 중에 배열 요소를 구분하는 인자로 구분 기호를 지정할 수 있습니다.
const arr = ["apple", "banana", "orange"];
const joinedString = arr.join(", ");
console.log(joinedString); // "apple, banana, orange"
push()및 pop() 메서드
push() 메서드는 배열의 끝에 하나 이상의 요소를 추가하는 데 사용되며 pop() 메서드는 배열의 끝에서 마지막 요소를 제거하는 데 사용됩니다.
const arr = [1, 2, 3];
arr.push(4, 5); // 요소 추가하기
console.log(arr); // [1, 2, 3, 4, 5]
arr.pop(); // 마지막 요소를 제거합니다.
console.log(arr); // [1, 2, 3, 4]
shift()및 unshift() 메서드
shift() 메서드는 배열의 첫 번째 요소를 제거하는 데 사용되며, unshift() 메서드는 배열의 시작 부분에 하나 이상의 요소를 추가하는 데 사용됩니다.
const arr = [1, 2, 3];
arr.shift(); // 첫 번째 요소를 제거합니다.
console.log(arr); // [2, 3]
arr.unshift(0); // 처음에 요소 추가하기
console.log(arr); // [0, 2, 3]
slice()메서드
slice() 메서드는 처음부터 끝까지 선택된 배열의 일부를 반환합니다. 원래 배열은 수정하지 않습니다.
const arr = [1, 2, 3, 4, 5];
const slicedArr = arr.slice(1, 4);
console.log(slicedArr); // [2, 3, 4]
slice() 메서드는 배열의 끝에서 계산을 시작할 위치를 나타내는 음수를 인수로 받을 수 있습니다.
const arr = [1, 2, 3, 4, 5];
const slicedArr = arr.slice(-3);
console.log(slicedArr); // [3, 4, 5]
스플라이스() 메서드
스플라이스() 메서드는 지정된 위치에 요소를 추가하거나 제거하는 데 사용됩니다. 이 메서드는 원래 배열을 수정하고 삭제된 요소를 반환합니다.
const arr = [1, 2, 3, 4, 5];
arr.splice(2, 1, 6); // 인덱스 2에서 요소를 삭제하고 6을 삽입합니다.
console.log(arr); // [1, 2, 6, 4, 5]
indexOf()및 lastIndexOf() 메서드
indexOf() 메서드는 배열에서 첫 번째로 일치하는 요소의 인덱스를 반환하고 lastIndexOf() 메서드는 배열에서 마지막으로 일치하는 요소의 인덱스를 반환합니다.
const arr = [1, 2, 3, 4, 2];
console.log(arr.indexOf(2)); // 1
console.log(arr.lastIndexOf(2)); // 4
forEach()메서드
forEach() 메서드는 배열의 각 요소를 반복합니다.
const arr = [1, 2, 3];
arr.forEach(item => {
console.log(item);
});
reverse()메서드
reverse() 메서드는 배열의 요소 순서를 반대로 하는 데 사용됩니다.
const arr = [1, 2, 3, 4, 5];
const reversedArr = arr.reverse();
console.log(reversedArr); // [5, 4, 3, 2, 1]
sort()메서드
sort() 메서드는 배열의 요소를 정렬하는 데 사용됩니다.
const arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
const sortArr1 = arr.sort((a, b) =>{
return a-b //
});
const sortArr2 = arr.sort(()=>{
return b-a //
})





