const arr = ['apple', 'banana', 'orange'];
console.log(arr[0]); // apple
console.log(arr[1]); // banana
console.log(arr[2]); // orange
console.log(arr.length); // 3
for(let i = 0; i < arr.length; i++) {
console.log(arr[i]); // 'apple' 'banana' 'orange'
}
console.log(typeof arr); // object
console.log(arr.constructor === Array); // true
console.log(Object.getPrototypeOf(arr) === Array.prototype) // true
const arr = [
'string',
10,
true,
null
undefined,
NaN,
Infinity,
[],
{},
function(){}
];
const arr = [1, 2, 3, 4, 5];
arr.length = 3;
console.log(arr); // [1, 2, 3]
const arr = [1, 2, 3];
console.log(arr.length); // 3
const arr2 = [];
console.log(arr2.length); // 0
const arr = new Array(10);
console.log(arr); // [empty x 10]
console.log(arr.length); // 10
const arr = new Array();
const arr = new Array(1, 2, 3); // [1, 2, 3]
const arr2 = new Array({}); // [{}]
Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of('string'); // ['string']
Array.from({length: 2, 0: 'a', 1: 'b'}); // ['a', 'b']
Array.from('Hello'); // ['H', 'e', 'l', 'l', 'o']
Array.from({length: 3}, (_, i) => i); // [0, 1, 2]
const arr = [1, 2];
console.log(arr[1]); // 2
console.log(arr[3]); // undefined
const arr = [0];
arr[1] = 1;
console.log(arr); // [0, 1]
console.log(arr.length); // 2
arr[0] = 10;
console.log(arr); // [10, 1]
arr['foo'] = 2;
console.log(arr); // [10, 1, foo: 2]
console.log(arr.length); // 2
const arr = [1, 2, 3];
delete arr[1];
console.log(arr); // [1, empty, 3]
console.log(arr.length); // 3
const arr = [1, 2, 3];
// arr[1]부터 1개의 요소를 제거
arr.splice(1, 1);
console.log(arr); // [1, 3]
console.log(arr.length); // 2
// true
Array.isArray([]);
Array.isArray([1, 2]);
Array.isArray(new Array());
// false
Array.isArray();
Array.isArray({});
Array.isArray(null);
Array.isArray(undefined);
Array.isArray(1);
Array.isArray('Array);
Array.isArray(true);
Array.isArray(false);
Array.isArray({0: 1, length: 1);
const arr = [1, 2, 2, 3];
arr.indexOf(2); // 1
arr.indexOf(4); // -1
// 두번째 인수는 검색을 시작할 인덱스임.
arr.indexOf(2, 2); // 2
const foods = ['apple', 'banana', 'orange'];
if(foods.indexOf('orange') === -1) {
foods.push('orange);
}
console.log(foods); // ['apple', 'banana', 'orange'];
const arr = [1, 2];
let result = arr.push(3, 4);
console.log(result); // 4
console.log(arr); // [1, 2, 3, 4]
// ES6 스프레드 문법
const newArr = [...arr, 5];
console.log(newArr); // [1, 2, 3, 4, 5]
const arr = [1, 2];
let result = arr.pop();
console.log(result); // 2
console.log(arr); // [1]
const arr = [1, 2];
let result = arr.unshift(3, 4);
console.log(result); // 4
console.log(arr); // [3, 4, 1, 2]
// ES6 스프레드 문법 사용
const newArr = [5, ...arr];
console.log(newArr); // [5, 3, 4, 1, 2]
const arr = [1, 2];
let result = arr.shift();
console.log(result); // 1
console.log(arr); // [2]
const arr1 = [1, 2];
const arr2 = [3, 4];
let result = arr1.concat(arr2);
console.log(result); // [1, 2, 3, 4]
result = arr1.concat(3);
console.log(result); // [1, 2, 3]
result = arr1.concat(arr2, 5);
console.log(result); // [1, 2, 3, 4, 5]
console.log(arr1); // [1, 2]
result = [...arr1, ...[3, 4]];
console.log(result); // [1, 2, 3, 4]
array.splice(start[, deleteCount][, items])
let arr = [1, 2, 3, 4];
// 인덱스 1부터 2개의 요소를 삭제하고 그 자리에 20, 30을 삽입한다.
let result = arr.splice(1, 2, 20, 30);;
console.log(result); // [2, 3]
console.log(arr); // [1, 20, 30, 4]
result = arr.splice(2, 0, 100);
console.log(result); // []
console.log(arr); // [1, 2, 100, 20, 30]
result = arr.splice(3, 2);
console.log(result); // [20, 30]
console.log(arr); // [1, 2, 100]
result = arr.splice(1);
console.log(result); // [2, 100]
console.log(arr); // [1]
const arr = [1, 2, 3, 1, 2];
const index = arr.indexOf(2);
const result = arr.splice(index, 1);
console.log(arr); // [1, 3, 1, 2]
array.slice(start, end)
const arr = [1, 2, 3];
// arr[0]부터 arr[1] 전까지 복사한 값 반환
arr.slice(0, 1); // [1]
// arr[1]부터 arr[2] 전까지 복사한 값 반환
arr.slice(1, 2); // [2]
console.log(arr); // [1, 2, 3]
// arr[1]부터 이후의 모든 요소 복사
arr.slice(1); // [2, 3]
const copy = arr.slice();
console.log(copy); // [1, 2, 3]
console.log(arr === copy); // false
const arr = [1, 2, 3, 4];
arr.join(); // '1,2,3,4'
arr.join(''); //'1234'
arr.join(':'); // '1:2:3:4'
const arr = [1, 2, 3];
const result = arr.reverse();
console.log(arr); // [3, 2, 1]
console.log(result); // [3, 2, 1]
const arr = [1, 2, 3, 4, 5];
// 인수로 전달받은 값 0을 배열의 인덱스 1부터 끝까지 요소로 채운다.
arr.fill(0, 1);
console.log(arr); // [1, 0, 0, 0, 0]
// 인수로 전달받은 값 2을 배열의 인덱스 1부터 3이전까지 요소로 채운다.
arr.fill(2, 1, 3);
console.log(arr); // [1, 2, 2, 0, 0]
const arr = [1, 2, 3];
arr.includes(2); // true
arr.includes(100); // false
// 배열에 요소 1이 포함되어 있는지 인덱스 1부터 확인.
arr.includes(1, 1); // false
// 배열에 요소 3이 포함되어 있는지 인덱스 2(arr.length - 1) 부터 확인.
arr.includes(3, -1); // true
[1, [2, [3, [4]]]].flat(); // [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(1); // [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(2); // [1, 2, 3, [4]]
[1, [2, [3, [4]]]].flat().flat(); // [1, 2, 3, [4]]
[1, [2, [3, [4]]]].flat(Infinity); // [1, 2, 3, 4]
const fruits = ['Banana', 'Orange', 'Apple'];
const fruitsKor = ['바나나', '오렌지', '사과'];
fruits.sort();
fruitsKor.sort();
console.log(fruits); // ['Apple', 'Banana', 'Orange']
console.log(fruitsKor); // ['바나나', '사과', '오렌지']
const points = [40, 100, 1, 5, 2, 25, 10];
// 숫자 배열의 오름차순 정렬. 비교 함수의 반환값이 0보다 작으면 a를 우선으로 정렬
points.sort((a, b) => a - b);
console.log(points); // [1, 2, 5, 10, 25, 40, 100]
// 숫자 배열의 내림차순 정렬. 비교 함수의 반환값이 0보다 작으면 b를 우선으로 정렬
points.sort((a, b) => b - a);
console.log(points); // [100, 40, 25, 10, 5, 2, 1]
const numbers = [1, 2, 3];
const pows = [];
numbers.forEach(item => pows.push(item ** 2));
console.log(pows); // [1, 4, 9]
[1, 2, 3].forEach((item, index, arr) => {
console.log(`요소값 : ${item}, 인덱스 : ${index}, this : ${JSON.stringify(arr)}`)
})
/*
요소값 : 1, 인덱스 : 0, this : [1,2,3]
요소값 : 2, 인덱스 : 1, this : [1,2,3]
요소값 : 3, 인덱스 : 2, this : [1,2,3]
*/
class Numbers {
numberArray = [];
multiply(arr) {
arr.forEach(function (item) {
// forEach의 콜백 함수가 일반 함수로 호출 되면 this를 제대로 가리키지 못하기 때문에 TypeError가 뜬다.
// forEach 메서드의 콜백 함수 내부에서 this로 사용할 객체를 전달
this.numberArray.push(item * item);
}, this);
}
}
const numbers = new Numbers();
numbers.multiply([1, 2, 3]);
console.log(numbers.numberArray); // [1, 4, 9]
class Numbers {
numberArray = [];
multiply(arr) {
arr.forEach((item) => this.numberArray.push(item * item));
}
}
const numbers = new Numbers();
numbers.multiply([1, 2, 3]);
console.log(numbers.numberArray); // [1, 4, 9]
const numbers = [1, 4, 9];
const roots = numbers.map(item => Math.sqrt(item));
console.log(roots); // [1, 2, 3]
console.log(numbers); // [1, 4, 9]
[1, 2, 3].map((item, index, arr) => {
console.log(`요소값 : ${item}, 인덱스 : ${index}, this : ${JSON.stringify(arr)}`);
return item;
})
/*
요소값 : 1, 인덱스 : 0, this : [1,2,3]
요소값 : 2, 인덱스 : 1, this : [1,2,3]
요소값 : 3, 인덱스 : 2, this : [1,2,3]
*/
const numbers = [1, 2, 3, 4, 5];
const odds = nubmers.filter(item => item % 2);
console.log(odds); // [1, 3, 5]
[1, 2, 3].filter((item, index, arr) => {
console.log(`요소값 : ${item}, 인덱스 : ${index}, this : ${JSON.stringify(arr)}`);
return item % 2;
})
/*
요소값 : 1, 인덱스 : 0, this : [1,2,3]
요소값 : 2, 인덱스 : 1, this : [1,2,3]
요소값 : 3, 인덱스 : 2, this : [1,2,3]
*/
const sum = [1, 2, 3, 4].reduce((accumulator, currentValue, index, array) => {
return accumulator + currentValue;
}, 0);
console.log(sum); // 10
[5, 10, 15].some(item => item > 10); // true
[5, 10, 15].some(item => item < 10); // false
[5, 10, 15].every(item => item > 3); //true
[5, 10, 15].every(item => item > 10); //false
const user = [
{ id: 1, name: 'Lee' },
{ id: 2, name: 'Kim' },
{ id: 2, name: 'Choi' },
{ id: 3, name: 'Park' },
];
user.find(user => user.id === 2); // {id: 2, name: 'Kim'}
const user = [
{ id: 1, name: 'Lee' },
{ id: 2, name: 'Kim' },
{ id: 2, name: 'Choi' },
{ id: 3, name: 'Park' },
];
user.findIndex(user => user.id === 2); // 1
user.findIndex(user => user.name === 'Park'); // 3
const arr = ['hello', 'world'];
arr.flatMap(x = > x.split(''));
// ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']