JavaScript에서 Array 다루기

React State의 Immutability 유지 등을 위하여 JS에서의 Array Method를 다시 정리 및 숙달 함

method로 인해 array 구성 elements에 변화와 method의 return 값은 다름을 항상 주의

pop

배열 끝을 삭제

let arr = [1, 2, 3, 4];
arr.pop(); // return value is 4
console.log(arr); // [1, 2, 3]

push

배열 끝에 삽입

let arr = [1, 2, 3, 4];
arr.push(5); // return value is length of arr after pushed
console.log(arr); // [1, 2, 3, 4, 5]

shift

배열 앞을 삭제

let arr = [1, 2, 3, 4];
arr.shift(); // 1 (if empty, return undefined)
console.log(arr); // [2, 3, 4]

unshift

배열 앞에 삽입

let arr = [1, 2, 3, 4];
arr.unshift(0); // return value is length of arr after unshifted
console.log(arr); // [0, 1, 2, 3, 4]

splice

배열의 특정 위치에 삽입 및 삭제

array.splice(start[, deleteCount[, item1[, item2[, …]]]]) splice(시작 Index, 제거할 요소 개수, 삽입할 요소)

💡 반환 값은 제거된 요소로 이루어진 배열임

let arr = [1, 2, 3, 4, 5, 6, 7];
arr.splice(3, 2);
console.log(arr); // [1, 2, 3, 6, 7]

let arr2 = [1, 2, 3, 4, 5, 6, 7];
arr2.splice(2, 1, "a", "b");
console.log(arr2); // [1, 2, "a", "b", 4, 5, 6, 7]

slice (startIndex, endIndex)

배열의 shallow copy를 새로운 배열로 반환

slice(시작 Index, 끝 Index)

let arr = [1, 2, 3, 4, 5, 6, 7];
let shallowArr = arr.slice(3, 6);
console.log(shallowArr); // [4, 5, 6]

concat

배열을 합쳐 반환

let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = arr2.conact(arr1);
console.log(arr3); // [1, 2, 3, 4 , 5, 6]

every

배열의 모든 요소가 함수를 충족하는지 테스트

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let isEven = (value) => {
  return value % 2 === 0; // value가 2의 배수이면 true 반환
};
console.log(arr.every(isEven)); // false, 모든 요소가 true인 경우에만 true 반환

some

함수의 결과가 true 일 때까지 배열의 각 원소를 순회

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let isEven = (value) => {
  return value % 2 === 0; // value가 2의 배수이면 true 반환
};
console.log(arr.some(isEven)); // true, 하나라도 true인 경우 true 반환

forEach

배열의 각 원소 별로 함수 실행

let arr = [1, 2, 3];
arr.forEach((element) => {
  console.log(element); // 1\n 2\n 3\n
});

map

배열의 각 원소별로 지정된 함수를 실행한 결과로 구성된 배열 반환

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let isEven = function (value) {
  return value % 2 === 0;
};
let newArr = arr.map(isEven);
console.log(newArr); // [false, true, false, true, false, true, false, true, false, true]

filter

지정된 함수의 결과 값을 true로 만드는 원소들로만 구성된 배열 반환

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let isEven = function (value) {
  return value % 2 === 0;
};
let newArr = arr.filter(isEven);
console.log(newArr); // [2, 4, 6, 8, 10]

reduce

누산기(accumulator) 및 배열의 각 값에 대해 누산된 값으로 줄도록 함수 적용

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let value = arr.reduce(function (previousValue, currentValue, index) {
  return previousValue + currentValue;
});
console.log(value); // 55;

reverse

배열의 원소 순서를 뒤집음

let arr = [1, 2, 3, 4];
arr.reverse();
console.log(arr); // [4, 3, 2, 1]

sort

배열을 알파벳순 또는 지정된 함수에 의한 순서로 정렬, 모든 원소를 문자 취급하여 정렬

let arr = [13, 12, 11, 10, 5, 3, 2, 1];
arr.sort();
console.log(arr); // [1, 10, 11, 12, 13, 2, 3, 5]

let arr2 = [13, 12, 11, 10, 5, 3, 2, 1]; // ?
arr2.sort((a, b) => {
  return a - b;
});
console.log(arr2); // [1, 2, 3, 5, 10, 11, 12, 13]

toString

배열을 문자열로 반환

let arr = [1, 2, 3, 4];
console.log(arr.toString()); // '1,2,3,4'

valueOf

배열의 원시 데이터형 반환

let arr = [1, 2, 3, 4];
console.log(arr.valueOf()); //

join

배열 원소 전부를 하나의 문자열로 표현

let arr = [1, 2, 3, 4, 5];
console.log(arr.join()); // 1,2,3,4
console.log(arr.join("-")); // 1-2-3-4

References

Array on mozzila.org

JavaScript Array Method 정리