Array.indexOf(), Array.includes()
배열 요소의 index값을 알아내기 위해 indexOf 메소드를 사용할 수 있습니다. 중복된 요소가 있는 경우 첫 번째 index만 반환하고, 해당 요소가 없다면 -1 index를 반환합니다. includes 메소드는 배열 요소가 배열에 포함되는지의 여부를 진리값으로 반환합니다.
let arr = [1, 2, 3, 3, "four", "five", "six"];
console.log(arr.indexOf("six")); // 6
console.log(arr.indexOf(3)); // 2
console.log(arr.indexOf("ten")); // -1
console.log(arr.includes("six")); // true
Array.concat(), Array.push(), Array.unshift(), Array.splice()
concat메소드는 인수를 원본 배열이 아닌 배열 복사본의 마지막에 추가하고, 복사본을 반환합니다.
let arr = [1, 2, 3, 4, 5];
console.log(arr.concat(6, 7)); // (7)[1, 2, 3, 4, 5, 6, 7]
console.log(arr); // (5)[1, 2, 3, 4, 5]
/* concat 메소드는 배열의 복사본을 반환합니다. */
이와 달리 push, unshift, splice 메소드는 원본 배열을 직접 변경한 뒤 변경된 배열의 length값을 반환합니다. 배열의 마지막에 추가할 때는 push, 맨 앞에 추가할 때는 unshift, 중간에 추가할 때는 splice 메소드를 사용합니다. 다만, push, unshift 메소드는 concat 메소드, length로 요소를 추가하는 방법보다 성능이 더 낮습니다.
let arr = [1, 2];
console.log(arr.push(3, 4)); // 4
console.log(arr); // (4)[1, 2, 3, 4]
console.log(arr.unshift(5, 6)); // 6
console.log(arr); // (6)[1, 2, 3, 4, 5, 6]
/* push, unshift 메소드는 원본 배열의 length값을 변경시킵니다. */
console.log(arr.splice(3, 0, 10)); // []
console.log(arr); // (7)[1, 2, 3, 10, 4, 5, 6];
/*
splice 메소드로 배열 중간에 요소를 추가하거나 제거할 수 있습니다.
(index, 제거할 요소 개수, 추가할 요소)
*/
arr[arr.length] = 100
console.log(arr); // (8)[1, 2, 3, 10, 4, 5, 6, 100];
console.log([-1].concat(arr)); // (9)[-1, 1, 2, 3, 10, 4, 5, 6];
console.log(arr); // (8)[1, 2, 3, 10, 4, 5, 6, 100];
/* 성능을 고려할 때는 length, concat을 사용하는 것이 좋습니다. */
Array.pop(), Array.shift()
pop, shift 메소드는 배열의 원본 배열을 직접 변경한 뒤 제거한 요소를 반환합니다. 배열의 마지막 요소를 제거할 때는 pop, 맨 앞의 요소를 제거할 때는 shift 메소드를 사용합니다.
let arr = [1, 2, 3, 4, 5];
console.log(arr.pop()); // 5
console.log(arr); // (4)[1, 2, 3, 4]
console.log(arr.shift()); // 1
console.log(arr); // (3)[2, 3, 4]
/* pop, shift 메소드는 원본 배열에서 제거한 요소를 반환합니다. */
Array.join()
join 메소드는 배열 요소를 전체로 연결해 생성한 문자열을 반환합니다. join 메소드는 add 연산자보다 빠릅니다.
let arr = [1, 2, 3, 4, 5];
console.log(arr.join()); // "1,2,3,4,5"
console.log(arr.join("")); // "12345"
console.log(arr.join(":")); // "1:2:3:4:5"
Array.slice()
slice 메소드는 인수로 지정된 배열의 부분을 다른 배열로 복사한 뒤 반환합니다.
let arr = [1, 2, 3, 4, 5];
console.log(arr.slice()); // [1, 2, 3, 4, 5]
console.log(arr.slice(1, 2)); // [2]
console.log(arr.slice(1, 4)); // [2, 3, 4]
console.log(arr.slice(1)); // [2, 3, 4, 5]
console.log(arr.slice(-1)); // [5]
/*
slice 메소드로 배열 요소를 중간부터 복사해서 배열로 반환합니다.
(indexA, indexB - 1)
인수가 음수라면 배열의 끝에서부터 요소를 반환합니다.
(-index)
*/
Array.reverse()
reverse 메소드는 원본 배열 요소 순서를 반대로 변경한 후 변경된 원본 배열을 반환합니다.
let arr = [1, 2, 3, 4, 5];
console.log(arr.reverse()); // [5, 4, 3, 2, 1]