[JavaScript] 배열 메서드

실제 사용되는 배열 메서드는 훨씬 많지만 간략하게라도 아래에 정리하였다.

concat

배열을 하나로 합칠 때 사용한다. 인자로 들어온 배열의 순서대로 합쳐진다.

var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
var arr3 = [7, 8, 9];

var wrap = arr1.concat(arr2, arr2, arr3);

console.log(wrap);
// (12) [1, 2, 3, 4, 5, 6, 4, 5, 6, 7, 8, 9]

console.log(arr1);
// (3) [1, 2, 3]

forEach

주어진 함수를 배열 요소 각각에 대해 실행한다.

var arr = ['a', 'b', 'c'];

arr.forEach(function (element) {
    console.log(element);
    // a
    // b
    // c
});

map

배열을 반복하고, 콜백함수가 리턴한 값으로 새 배열을 반환한다.

var users = [
    { name: '철수', age: 20 },
    { name: '영희', age: 25 },
    { name: '민수', age: 23 },
    { name: '주연', age: 27 }
];

var usersName = users.map(function (element) {
    return element.name;
    // 각 요소의 nama 값만 반환
});

console.log(usersName);
// (4) ["철수", "영희", "민수", "주연"]

filter

배열을 반복하고, 콜백함수의 리턴값이 true인 요소로만 구성된 새 배열을 반환한다. 아래 예제는 age가 23 초과인 요소만 반환하였다.

var users = [
    { name: '철수', age: 20 },
    { name: '영희', age: 25 },
    { name: '민수', age: 23 },
    { name: '주연', age: 27 }
];

var usersOld = users.filter(function (element) {
    return element.age > 23;
});

console.log(usersOld);
// (2) [{…}, {…}]
// 0: {name: "영희", age: 25}
// 1: {name: "주연", age: 27}
// length: 2
// __proto__: Array(0)

sort

배열을 반복하고, 콜백함수의 리턴값이 true인 요소로만 구성된 새 배열을 반환한다. 아래 예제는 age가 23 초과인 요소만 반환하였다.

var arr = [5, 2, 1, 3, 10, 4];

arr.sort(function(a, b) {
    return a - b;
    // 오름차순
});
console.log(arr);
// (6) [1, 2, 3, 4, 5, 10]

arr.sort(function(a, b) {
    return b - a;
    // 내림차순
});
console.log(arr);
// (6) [10, 5, 4, 3, 2, 1]

indexOf

인자로 전달된 요소와 매치되는 첫번째 요소의 인덱스를 반환한다. 일치하는 요소가 없으면 -1을 반환한다.

var arr = ['a', 'b', 'c', 'd'];

console.log(arr.indexOf('c')); // 2
console.log(arr.indexOf('e')); // -1

every

함수의 리턴값이 false가 될 때 까지 배열 요소 각각에 대해 함수를 실행한다.

var arr = [1, 2, 3, 4, 5];

arr.every(function(element) {
    console.log(element);
    // 1
    // 2
    // 3
    return element < 3;
});

References

JavaScript 배열 메서드 ( Array method )
Array.prototype.forEach()
알아두면 좋은 자바스크립트 배열 메서드

updated_at 15-05-2018