JS를 사용하다보면, 배열 메소드를 사용할 일이 아주 잦진 않지만 꽤나 자주 있는 편이다.
하지만, splice
, slice
등 이름도 비슷하고 기능도 얼추 보면 비슷해보이고, 종류도 다양해 자주 헷갈리곤 한다. 사실 나만 그럴지도 모른다.
헷갈리지만 유용한 배열 메소드들을 지금부터 소개해보겠다.
push
& unshift
let arr = [1, 2, 3];
console.log(arr.push('push!')); // [1, 2, 3, 'push!']
console.log(arr); //
console.log(arr.unshift('unshift!')); // 5
console.log(arr); // ['unshift!', 1, 2, 3, 'push!']
push
배열 끝에 요소를 추가시킨다.unshift
배열 앞에 요소를 추가시킨다.pop
& shift
let arr = ['unshift!', 1, 2, 3, 'push!'];
console.log(arr.pop()); // push!
console.log(arr); // ['unshift!', 1, 2, 3]
console.log(arr.shift()); // unshift!
console.log(arr); // [1, 2, 3]
pop
배열 끝의 요소를 제거한다.unshift
배열 앞의 요소를 제거한다.concat
let arr1 = [1, 2];
let arr2 = [3, 4];
let arr3 = [5, 6];
console.log(arr1.concat(arr2)); // [1, 2, 3, 4]
console.log(arr1.concat(arr2, arr3, 7)); // [1, 2, 3, 4, 5, 6, 7]
slice
arr.slice(begin, end)
let arr = [1, 2, 3, 4, 5];
console.log(arr.slice(2, 4)); // [3, 4]
console.log(arr); // [1, 2, 3, 4, 5]
begin
(포함)부터 end
전까지의 요소가 담긴 배열을 return
한다.splice
array.splice(start, deleteCount, item1, item2, ...)
let arr = [1, 2, 3, 4];
console.log(arr.splice(0, 2)); // [1, 2]
console.log(arr); // [3, 4]
console.log(arr.splice(2, 1, 123)); // [3]
console.log(arr); // [1, 2, 123, 4]
filter
arr.filter(callback(currentValue, index, array), thisArg)
let arr = [1, 2, 3, 4, 5, 6, 7, 8];
let result = arr.filter((val) => {
return val % 2 === 0;
});
console.log(result); // [2, 4, 6, 8]
console.log(arr); // [1, 2, 3, 4, 5, 6, 7, 8]
currentValue
: 처리할 현재 요소이다.index
: 처리할 현재 요소의 인덱스이다.array
: map
을 호출한 배열이다.thisArg
: callback
을 사용할 때 this
로 사용하는 값이다.map
arr.map(callback(currentValue, index, array), thisArg)
let arr = [1, 2, 3, 4, 5];
let result = arr.map((val) => {
return val += 5 ;
});
console.log(arr); // [1, 2, 3, 4, 5]
console.log(result); // [6, 7, 8, 9, 10]
currentValue
: 처리할 현재 요소이다.index
: 처리할 현재 요소의 인덱스이다.array
: map
을 호출한 배열이다.thisArg
: callback
을 사용할 때 this
로 사용하는 값이다.forEach
arr.forEach(callback(currentValue, index, array), thisArg)
let arr =[1, 2, 3, 4, 5];
arr.forEach(function(el, index) {
arr[index] += 3;
});
console.log(arr); // [4, 5, 6, 7, 8];
currentValue
: 처리할 현재 요소이다.index
: 처리할 현재 요소의 인덱스이다.array
: map
을 호출한 배열이다.thisArg
: callback
을 사용할 때 this
로 사용하는 값이다.fill
arr.fill(value, start, end)
let arr = [1, 2, 3, 4, 5];
console.log(arr.fill("hi!")); // ['hi!', 'hi!', 'hi!', 'hi!', 'hi!']
console.log(arr.fill("bye!", 1, 4)); // ['hi!', 'bye!', 'bye!', 'bye!', 'hi!']
console.log(arr.fill("ok!", 2)); // ['hi!', 'bye!', 'ok!', 'ok!', 'ok!']
console.log(arr) // ['hi!', 'bye!', 'ok!', 'ok!', 'ok!']
start
(포함)부터 end
전까지를 value
로 채운다.start
, end
값이 없다면 value
로 가득 채운다.includes
arr.includes(valueToFind, fromIndex)
let arr = ['Kim', 'Park', 'Choi'];
console.log(arr.includes('Kim')); // true
console.log(arr.includes('Son')); // false
console.log(arr.includes('Kim', 2)); // false
boolean
으로 반환한다.fromIndex
는 이 배열에서 검색을 시작할 위치이고, 기본값은 0이다.join
arr.join(separator = ',');
let arr = [1, 2, 3, 4, 5];
console.log(arr.join()); // 1,2,3,4,5
console.log(arr.join('-')); // 1-2-3-4-5
console.log(arr.join('')); // 12345
console.log(arr); // [1, 2, 3, 4, 5]
separator
는 배열을 문자열로 결합할 때 이어 붙일 값이며, 기본값은,
이다.reduce
arr.reduce(callback(total, currentValue, currentIndex, arr), initialValue)
let arr =[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
let value = arr.reduce( function( total, currentValue, currentIndex ) {
return previousValue + currentValue;
});
console.log( value ); // 55
total
: 초기 값 또는 이전에 반환된 함수 값이다.currentValue
: 현재 요소의 값이다.currentIndex
: 현재 요소의 인덱스이다.arr
: 현재 요소가 속한 배열이다.
👏