[]안에 넣고 싶은 여러개의 값을 ,로 구분해 생성한다.배열[인덱스]의 구조로 참조한다.배열[0]은 첫번째 요소를 참조한다.length 프로퍼티를 통해 배열의 길이(배열이 가진 요소의 개수)를 참조할 수 있다.// 요소로 1,2,3 총 3개의 요소를 가진 배열 생성
let arr = [1,2,3];
// 배열의 인덱스 1 즉, 두번째 요소를 참조
console.log(arr[1]); // 2 출력
// arr.length 프로퍼티를 통해 배열의 길이(배열이 가진 요소의 개수)를 참조
console.log(arr.length); // 3 출력
배열[인덱스] = 값; 의 형태로 원하는 인덱스에 값을 추가할 수 있다.delete 키워드를 통해 요소를 삭제할 수 있다.let fruits = ["apple", "banana", "grape"];
// fruits[3]에 "peach" 추가
fuirts[3] = "peach";
console.log(fruits) // ["apple", "banana", "grape", "peach"] 출력
// fruits[0]의 값을 기존 "apple"에서 "orange" 로 갱신
fruits[0] = "orange";
console.log(fruits[0]) // "apple" 출력
// fruits[1]의 값 "banana" 삭제
delete fruits[1];
console.log(fruits) // ["orange", "grape", "peach"] 출력
Array.prototype.push, Array.prototype.pop push : 배열의 마지막에 요소들을 추가한다.pop : 배열의 마지막 요소 1개를 제거한다.push와 pop 모두 원본 배열을 직접 변경한다.let numArr = [1,2,3];
// numArr 배열의 마지막 요소로 1과 2를 추가
let pushResult = numArr.push(4,5); // 변경된 numArr의 length 값 5 반환
console.log(pushResult); // 5출력
console.log(numArr); // [1,2,3,4,5] 출력
let popResult = numArr.pop(); // numArr의 마지막 요소 5를 제거 후 제거 된 요소를 반환
console.log(popResult);
console.log(numArr); // [1,2,3,4] 출력
Array.prototype.unshift, Array.prototype.shift unshift : 배열의 시작에 요소들을 추가한다.shift : 배열의 시작 요소 1개를 제거한다.unshift와 shift 모두 원본 배열을 직접 변경한다.let numArr = [3,4];
// numArr 배열의 시작 요소로 1과 2를 추가
let unshiftResult = numArr.unshift(1,2); // 변경된 numArr의 length 값 5 반환
console.log(pushResult); // 4출력
console.log(numArr); // [1,2,3,4] 출력
let shiftResult = numArr.shift(); // numArr의 첫번째 요소 1을 제거 후 제거 된 요소를 반환
console.log(sihtResult); // 1 출력
console.log(numArr); // [2,3,4] 출력
Array.prototype.splice0으로 지정하면 배열의 중간에 요소를 추가만 할 수 있다.let numArr = [1,20,30,4,5];
// 두번째 인덱스부터 2개를 삭제후 2,3을 추가 후 제거한 요소 20,30을 배열로 반환
let result = numArr.splice(1,2,2,3);
console.log(result); // [20,30] 출력
console.log(numArr); // [1,2,3,4,5] 출력
Array.prototype.slicelet dogArr = ["coco", "happy", "choco"];
// dogArr의 요소를 dogArr[0]부터 dogArr[2] 이전까지의 요소를 복사하여 배열로 반환
let newDogArr = dogArr.slice(0,2);
console.log(newDogArr); // ["coco", "happy"] 출력
Array.prototype.indexOf-1 반환한다.-1 인지 확인하여 요소의 존재 여부 확인 가능하다.let brandArr = ["nike", "adidas", "puma"];
// brandArr 배열 안의 "adidas"의 인덱스 값 1 반환
console.log(brandArr.indexOf("adidas")); // 1출력
]
// brandArr 배열 안에 "new balance"가 없으므로 -1 반환
console.log(brandArr.indexOf("new balance")); // -1 출력
Array.prototype.includestrue, false로 반환한다.indexOf() 메서드 보다 가독성이 더 좋다.let compnayArr = ["apple", "samsung", "lg"];
// compnayArr에 "apple"이 존재하므로 true 반환
console.log(companyArr.includes("apple")); // true 출력
// companyArr에 "black berry"가 없으므로 false 반환
console.log(companyArr.includes("black berry"); // false 출력
for()문이 더 좋지만 배열의 고차함수가 가독성이 훨씬 좋다.Array.prototype.forEachfor() 문이 더 적절할 수 있다.let numArr = [1,2,3,4,5];
// 각 요소에 2를 곱해 콘솔창에 출력
numArr.forEach(function(num, idx){
console.log(idx, num * 2);
});
// 같은 코드를 for문으로 실행
for(let i = 0;i < numArr.length; i++) {
console.log(i, numArr[i] * 2);
}
2.Array.prototype.filter
return값이 true인 요소들만 모아 새로운 배열을 반환한다.let numArr = [-1,2,3,4,-5,6,10,-20,30,];
// 0보다 큰 숫자만 모아서 새로운 배열을 result 변수에 할당
let result = numArr.filter(function(num){
return num > 0;
});
console.log(result); // [2,3,4,6,10,30] 출력
// 같은 코드를 for문으로 실행
let result02 = [];
for(let i = 0; i < numArr.length;i++){
if(numArr[i] > 0) {
result.push(numArr[i]);
}
}
console.log(result02);
Array.prototype.mapreturn 값을 모아 새로운 배열로 반환한다.let numArr = [1,2,3,4,5];
// numArr의 각 요소에 2를 곱한 값을 모아 새로운 배열로 반환
let result = numArr.map(function(num){
return num * 2;
});
console.log(result); // [2,4,6,8,10] 출력
// 같은 코드를 for문으로 실행
let result02 = [];
for(let i = 0; i < numArr.length; i++) {
result02.push(numArr[i] * 2);
}
return되어 한줄로 표현 가능하다.let numArr = [1, 2, 3, 4, 5];
// numArr 각 요소에 2를 곱한 값을 모아서 result 변수에 할당
let result = numArr.map(num => num *2);
console.log(result); // [2,4,6,8,10] 출력
length 프로퍼티를 가지고 인덱스 값으로 참조를 하지만 배열의 메서드를 가지지 않는다.querySeletorAll() 함수가 반환하는 NodeList가 있다.Array.from() 혹은 스프레드 문법을 통해 유사배열을 배열로 바꿀 수 있다.Array.from()Array 내장객체에서 호출한다.<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
let boxList = document.querySelector(".box");
console.log(boxList); // NodeList(3)[div.box, div.box, div.box]
let boxArray = Array.from(boxList);
console.log(boxArray); //Array(3) [div.box, div.box, div.box];
...배열은 배열을 펼쳐서 나열한다.[] 안에서 스프레드 문법을 사용하면 새로운 배열에 기존 배열을 펼쳐서 복사하는 효과있다.<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
let boxList = document.querySelector(".box");
console.log(boxList); // NodeList(3)[div.box, div.box, div.box]
let boxArray = [...boxList];
console.log(boxArray); //Array(3) [div.box, div.box, div.box];