let fruits = ['apple', 'banana'];
console.log(fruits.length);
> 2
let fruits = ['apple', 'banana'];
console.log(fruits[0]);
> "apple"
let fruits = ['apple', 'banana'];
fruits.forEach(function (item, index, array) {
console.log(item, index);
});
> apple 0
> banana 1
let fruits = ['apple', 'banana'];
let newLength = fruits.push('orange');
console.log(fruits);
> ['apple', 'banana', 'orange']
let fruits = ['apple', 'banana', 'orange'];
fruits.pop();
console.log(fruits);
> ['apple', 'banana']
let fruits = ['apple', 'banana'];
fruits.shift();
console.log(fruits);
> ['banana']
let fruits = ['banana'];
fruits.unshift('mellon');
console.log(fruits);
> ['mellon', 'banana']
let fruits = ['mellon', 'banana'];
fruits.push('mango');
let pos = fruits.indexOf('banana');
console.log(pos);
> 1
let fruits = ['mellon', 'banana', 'mango'];
let pos = fruits.indexOf('banana');
let removedItem = fruits.splice(pos, 1);
console.log(fruits);
> ['mellon', 'mango']
: 배열에서 특정 위치의 원소를 삭제하거나 특정 위치에 원소를 추가를 경우 사용
arr.splice( index, deleteCount, item)
let fruits = ['mellon', 'mango'];
let arrCopy = fruits.slice();
console.log(arrCopy);
> ['mellon', 'mango']
arr.slice(begin, end)
: 유사 배열 객체(array-like object)나 반복 가능한 객체를 얕게 복사해서 새로운 Array 객체를 만듦.
console.log(Array.from('foo'));
> ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x));
> [2, 4, 6]
: 인자가 배열인지 판별하는 메서드
Array.isArray([1, 2, 3]); // true
Array.isArray({foo: 123}); // false
Array.isArray('foobar'); // false
Array.isArray(undefined); // false
: 인자의 수나 유형에 관계없이 가변 인자를 갖는 새 배열 인스턴스를 만듦.
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
: 배열의 일부를 얕게 복사한 뒤, 동일한 배열의 다른 위치에 덮어쓰고 그 배열을 반환함. 이 때, 크기(배열의 길이)를 수정하지 않고 반환함.
arr.copyWithin( target, start, end );
const arr = ['a', 'b', 'c', 'd', 'e'];
console.log(arr.copyWithin(0, 3, 4));
// [ "d", "b", "c", "d", "e"]
console.log(arr.copyWithin(1, 3));
// ["d", "d", "e", "d", "e"]
[1, 2, 3, 4, 5].copyWithin(-2);
// [1, 2, 3, 1, 2]
const array = ['a', 'b', 'c'];
const iterator = array.entries();
console.log(iterator.next().value);
> [0, "a"]
console.log(iterator.next().value);
> [1, "b"]
: entries() 메서드는 배열의 각 인덱스에 대한 키/값 쌍을 가지는 새로운 array iterator 객체를 반환함.
var a = ['a', 'b', 'c'];
var iterator = a.entries();
for (let e of iterator) {
console.log(e);
}
> [0, 'a']
> [1, 'b']
> [2, 'c']
: 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트함.
빈 배열에서 호출하면 무조건 true 반환.
const isBelowThreshold = (currentValue) => currentValue < 40;
const arr = [1, 30, 39, 29, 10, 13];
console.log(arr.every(isBelowThreshold));
> true
[12, 54, 18, 130, 44].every(elem => elem >= 10);
> true
: 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환. 그런 요소가 없다면 undefined를 반환.
const arr = [5, 12, 8, 130, 44];
const found = arr.find(element => element > 10);
console.log(found);
> 12
: 주어진 판별 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스를 반환. 만족하는 요소가 없으면 -1을 반환.
const arr = [5, 12, 8, 130, 44];
const isLargeNumber = (element) => element > 13;
console.log(arr.findIndex(isLargeNumber));
> 3
: 주어진 함수를 배열 요소 각각에 대해 실행.
const arr = ['a', 'b', 'c'];
arr.forEach(element => console.log(element));
> "a"
> "b"
> "c"
: 배열의 각 인덱스를 키 값으로 가지는 새로운 Array iterator 객체를 반환.
const arr = ['a', 'b', 'c'];
const iterator = arr.keys();
for (const key of iterator) {
console.log(key);
}
> 0
> 1
> 2
: 배열 내의 모든 요소 각각에 대해 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환.
const arr = [1, 4, 9, 16];
const map = arr.map(x => x*2);
console.log(map);
> [2, 8, 18, 32]
: 배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환함.
const arr = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) => accumulator + currentValue;
// 1 + 2 + 3 + 4
console.log(arr.reduce(reducer));
> 10
// 5 + 1 + 2 + 3 + 4
console.log(arr.reduce(reducer, 5));
> 15
리듀서 함수는 네 개의 인자를 가짐.
: 누적기에 대해 함수를 적용하고 배열의 각 값(오른쪽에서 왼쪽으로)은 값을 단일 값으로 줄여감.
const arr = [[0, 1], [2, 3], [4, 5]].reduceRight((accumulator, currentValue) => accumulator.concat(currentValue));
// 1 + 2 + 3 + 4
console.log(arr);
> [4, 5, 2, 3, 0, 1]
const arr = ["1", "2", "3", "4", "5"];
const left = arr.reduce(function(prev, cur) { return prev + cur; });
const right = arr.reduceRight(function(prev, cur) { return prev + cur; });
console.log(left);
> 12345
console.log(right);
> 54321
: 배열 안의 어떤 요소라도 주어진 판별 함수를 통과하는지 테스트 함.
const arr = [1, 2, 3, 4, 5];
const even = (element) => element % 2 === 0;
console.log(arr.some(even));
> true
: 배열의 각 인덱스에 대한 값을 가지는 새로운 Array Iterator 객체를 반환함.
const arr = ['a', 'b', 'c'];
const iterator = arr.values();
for (const value of iterator) {
console.log(value);
}
> "a"
> "b"
> "c"
: 'arr[Symbol.iterator]' 속성의 초기 값은 values() 속성의 초기 값과 같은 함수
const arr = ['w', 'y', 'k', 'o', 'p'];
let eArr = arr[Symbol.iterator]();
// 방법 1
for (let letter of eArr) {
console.log(letter);
}
// 방법 2
console.log(eArr.next().value); // w
console.log(eArr.next().value); // y
console.log(eArr.next().value); // k
console.log(eArr.next().value); // o
console.log(eArr.next().value); // p