map()
메서드는 배열 내의 모든 요소마다 콜백함수를 거치게 만든 후, 도출된 그 결과값들을 모아 새로운 배열을 반환합니다.
✔ 문법
배열명.map(callback(element[, index[, array]])[, thisArg])
(1) callback
함수
element
: 처리할 배열 내의 현재 요소index
: element의 인덱스 (생략 가능)array
: map()을 호출한 배열 (생략 가능)(2) thisArg
: callback 함수 실행시, this로 사용되는 값 (생략 가능)
✔ 예제
const arr = [1,2,3,4,5];
const newArr = arr.map(x => x*2);
console.log(newArr); // [2,4,6,8,10]
const arr = [10, 50, 100];
const newArr = arr.map(x=> {
if(x > 30){ return '큼';}
});
console.log(newArr); // [undefined, '큼', '큼']
reduce()
메서드는 배열 내의 각 요소마다 주어진 리듀서(reducer)함수를 실행하고, 하나의 결과값을 반홥합니다.
배열명.reduce(callback[, initialValue])
(1) callback
함수
accumulator
: 콜백의 반환값이 누적되는 곳. initialValue가 제공되는 경우, 콜백 함수가 처음 호출될 때의 accumulator는 initialValue가 된다. initialValue가 없다면, 배열의 첫 번째 요소가 사용된다.currentValue
: 처리할 현재 요소currentIndex
: 처리할 현재 요소의 인덱스 (생략 가능)array
: reduce()
를 호출한 배열 (생략 가능)(2) initialValue
: callback의 최초 호출에서 첫 번째 인수에 제공하는 값(생략 가능)
✔ 예제
const heroes = [{name:'capt', age:100},{name:'thor', age:1000}];
const totalAge = heroes.reduce((total, currentItem)=>{
total = total + currentItem.age;
return total;
}, 0)
console.log(totalAge); // 1100
forEach()
메서드는 주어진 함수를 배열 요소 각각에 대해 실행하며 undefined를 반환합니다.
✔ 문법
배열명.forEach(callback(element[, index[, array]])[, thisArg])
(1) callback
함수
element
: 처리할 배열 내의 현재 요소index
: element의 인덱스 (생략 가능)array
: map()을 호출한 배열 (생략 가능)(2) thisArg
: callback 함수 실행시, this로 사용되는 값 (생략 가능)
✔ 예제
const arr = [1,2,3];
const copy = [];
arr.forEach(x=>copy.push(x+1));
console.log(copy); // [2,3,4]
every()
메서드는 배열 내의 모든 요소가 주어진 판별 함수를 통과하는지 테스트하고, 그에 대한 결과로서 boolean 값을 반환합니다.
✔ 문법
배열명.every(callback(element[, index[, array]])[, thisArg])
(1) callback
함수
element
: 처리할 배열 내의 현재 요소index
: element의 인덱스 (생략 가능)array
: every()을 호출한 배열 (생략 가능)(2) thisArg
: callback 함수 실행시, this로 사용되는 값 (생략 가능)
✔ 예제
const arr = ['candy', 'candy', 'chocolate'];
const newArr = arr.every(x => x === 'candy');
console.log(newArr); // false
some()
메서드는 배열 내의 어느 요소라도 주어진 판별 함수를 통과하는지 테스트하고, 그에 대한 결과로서 boolean 값을 반환합니다. 빈 배열일 때는 무조건false
를 반환.
✔ 문법
배열명.some(callback(element[, index[, array]])[, thisArg])
(1) callback
함수
element
: 처리할 배열 내의 현재 요소index
: element의 인덱스 (생략 가능)array
: some()을 호출한 배열 (생략 가능)(2) thisArg
: callback 함수 실행시, this로 사용되는 값 (생략 가능)
✔ 예제
const arr = ['candy', 'candy', 'chocolate'];
const newArr = arr.some(x => x === 'candy');
console.log(newArr); // true
filter()
메서드는 배열 내의 모든 요소마다 콜백함수를 거치게 만든 후, 그 중 true를 리턴한 요소만 모아 새로운 배열로 반환합니다.
✔ 문법
배열명.filter(callback(element[, index[, array]])[, thisArg])
(1) callback
함수
element
: 처리할 배열 내의 현재 요소index
: element의 인덱스 (생략 가능)array
: filter()을 호출한 배열 (생략 가능)(2) thisArg
: callback 함수 실행시, this로 사용되는 값 (생략 가능)
✔ 예제
const fruits = ['banana','pineapple','mango','apple'];
const result = fruits.filter(fruit => fruit.length > 5);
console.log(result); // ['banana','pineapple']
find()
메서드는 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환합니다. 그런 요소가 없다면 undefined를 반환합니다.
✔ 문법
배열명.find(callback[, thisArg])
(1) callback
함수
element
: 처리할 배열 내의 현재 요소index
: element의 인덱스 (생략 가능)array
: find()을 호출한 배열 (생략 가능)(2) thisArg
: callback 함수 실행시, this로 사용되는 값 (생략 가능)
✔ 예제
const arr = [1,2,3,4,5];
const result = arr.find(x => x > 3);
console.log(result); // 4
const ourClass = [
{name: 'Jay', age: 11},
{name: 'Sarah', age: 12},
{name: 'Tom', age: 9}
];
const student = ourClass.find(x => x.name === "Jay");
console.log(student); // {name:'Jay', age: 11}
findIndex()
메서드는 주어진 판별 함수를 만족하는 배열의 첫 번째 요소의 인덱스를 반환합니다. 만족하는 요소가 없으면 -1을 반환합니다.
✔ 문법
배열명.findIndex(callback(element[, index[, array]])[, thisArg])
(1) callback
함수
element
: 처리할 배열 내의 현재 요소index
: element의 인덱스 (생략 가능)array
: find()을 호출한 배열 (생략 가능)(2) thisArg
: callback 함수 실행시, this로 사용되는 값 (생략 가능)
✔ 예제
const arr = [1,2,6,7,8];
const result = arr.findIndex(x => x > 3);
const result2 = arr.findIndex(x => x > 10);
console.log(result); // 2
console.log(result2); // -1
indexOf()
메서드는 배열 내에서 특정 요소를 탐색하여 이에 해당하는 첫 번째 요소의 인덱스를 반환하고, 없을 경우 -1을 반환합니다.
✔ 문법
배열명.indexOf(searchElement[, fromIndex])
searchElement
: 배열에서 찾을 요소fromIndex
: 검색을 시작할 색인. 해당 인덱스가 배열의 길이보다 크거나 같은 경우 -1을 반환하므로 검색이 되지 않으며, 음수인 경우는 배열의 끝에서부터 오프셋 값으로 사용된다.✔ 예제
const fruits = ['banana','pineapple','mango','apple'];
fruits.indexOf('mango'); // 2
fruits.indexOf('melon'); // -1
// 모든 요소 찾기
var indices = [];
var array = ['a', 'b', 'a', 'c', 'a', 'd'];
var element = 'a';
var idx = array.indexOf(element);
while (idx != -1) {
indices.push(idx);
idx = array.indexOf(element, idx + 1);
}
console.log(indices); // [0, 2, 4]
includes()
메서드는 배열이 특정 요소를 포함하고 있는지를 판별하며, boolean 값을 반환합니다.
✔ 문법
배열명.includes(searchElement[, fromIndex])
searchElement
: 배열에서 찾을 요소fromIndex
: 검색을 시작할 색인. 해당 인덱스가 배열의 길이보다 크거나 같은 경우 -1을 반환하므로 검색이 되지 않으며, 음수인 경우는 배열의 끝에서부터 오프셋 값으로 사용된다.✔ 예제
const fruits = ['banana','peach','lemon'];
console.log(fruits.includes('banana')); // true
console.log(fruits.includes('pear')); // false
push()
메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환합니다.
✔ 문법
배열명.push(element1[, ...[, elementN]])
elementN
: 배열의 끝에 추가할 요소✔ 예제
const fruits = ['banana','peach'];
const newFruits = fruits.push('lemon'); // 1개 push
console.log(fruits); // ['banana',peach','lemon']
console.log(newFruits); // 3
const moreFruits = fruits.push('cherry','melon'); // n개 push
console.log(fruits); // ['banana','peach','lemon','cherry','melon']
console.log(moreFruits); // 5
pop()
메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.
✔ 문법
배열명.pop()
✔ 예제
const fruits = ['banana','peach','lemon'];
const removedFruits = fruits.pop();
console.log(fruits); // ['banana',peach']
console.log(removedFruits); // 'lemon'
unshift()
메서드는 배열의 첫 번째에 요소를 추가하고, 새로운 길이를 반환합니다.
✔ 문법
배열명.unshift([...elementN])
elementN
: 배열 맨 앞에 추가할 요소✔ 예제
const fruits = ['banana','peach','lemon'];
const newLength = fruits.unshift('grape');
console.log(fruits); // ['grape','banana','peach','lemon']
console.log(newLength); // '4'
shift()
메서드는 배열의 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다.
✔ 문법
배열명.shift()
✔ 예제
const fruits = ['banana','peach','lemon'];
const removedFruits = fruits.shift();
console.log(fruits); // ['peach','lemon']
console.log(removedFruits); // 'banana'
splice()
메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
✔ 문법
배열명.splice(start[, deleteCount[,item1[,item2[, ...]]]])
start
: 배열의 변경을 시작할 인덱스. 배열의 길이보다 큰 값인 경우, 실제 시작 인덱스는 배열의 길이로 설정된다. 음수인 경우, 배열의 끝에서부터 요소를 센다.deleteCount
: 배열에서 제거할 요소의 개수. 해당 인수가 생략되어 있거나 그 값이 array.length - start
보다 크면 , start
부터의 모든 요소를 제거한다. 값이 0 이하이면, 어떤 요소도 제거하지 않는다.itemN
: 배열에 추가할 요소. 생략되어 있는 경우, splice()
는 제거 기능을 한다.✔ 예제
// 1. 요소 추가
var fruits = ['banana','peach','lemon'];
var removed = fruits.splice(0, 0, 'melon');
console.log(fruits); // ['melon','banana','peach','lemon']
console.log(removed); // []
// 2. 요소 제거
var animals = ['dog','cat','zebra'];
var removed = animals.splice(1,1);
console.log(animals) // ['dog','zebra']
console.log(removed) // ['cat']
// 3. 요소 제거 및 교체
var foods = ['steak', 'pizza', 'hotdog'];
var removed = foods.splice(2,1,'sushi');
console.log(foods); // ['steak', 'pizza', 'sushi']
console.log(removed); // ['hotdog']
// 4. 음수 인덱스 적용
var alphabet = ['a','b','c','d','e'];
var removed = alphabet.splice(-2,2);
console.log(alphabet) // ['a','b','c']
console.log(removed) // ['d','e']
concat()
메서드는 인자로 주어진 배열이나 값들을 기존 배열 뒤에 합쳐서 새 배열을 반환합니다.
✔ 문법
배열명.concat([value1[, value2[, ...[, valueN]]]])
valueN
: 배열 또는 값. 생략한 경우, 기존 배열의 얕은 복사본을 반환✔ 예제
const fruits = ['banana','peach','lemon'];
const newFruits = fruits.concat('melon','plum');
console.log(fruits); // ['banana','peach','lemon']
console.log(newFruits); // ['banana','peach','lemon','melon','plum']
join()
메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.
✔ 문법
배열명.join([separator])
separator
: 배열의 각 요소를 구분할 문자열. 생락하면 쉼표로써 연결되고, 빈 문자열('')이면 배열의 모든 요소가 그 사이에 아무 문자 없이 연결된다.✔ 예제
const words = ['I','love','you'];
const noSeparator = words.join();
const emptySeparator = words.join('');
console.log(noSeparator); // I,love,you
console.log(emptySeparator); // Iloveyou