λ°°μ΄
μ μ¬λ¬ κ°μ κ°μ μμ°¨μ μΌλ‘ λμ΄ν μλ£κ΅¬μ‘°λ€.
// λ°°μ΄ λ¦¬ν°λ΄
const arr = ['apple', 'banana', 'orange'];
λ°°μ΄
μ΄ κ°μ§κ³ μλ κ°μμμ
λΌκ³ λΆλ₯΄λ©°, μλ°μ€ν¬λ¦½νΈμ λͺ¨λ κ°μ λ°°μ΄μμμ
κ° λ μ μλ€.
λ°°μ΄
μ μμλλ°°μ΄
μμ μμ μ μμΉλ₯Ό λνλ΄λ 0 μ΄μμ μ μμΈμΈλ±μ€
λ₯Ό κ°λλ€.μΈλ±μ€
λ λ°°μ΄μ μμμ μ κ·Όν λ μ¬μ©νλ€. λλΆλΆμ νλ‘κ·Έλλ° μΈμ΄μμμΈλ±μ€
0λΆν° μμνλ€.
μμμ μ κ·Όν λλ λκ΄νΈ νκΈ°λ²μ μ¬μ©νλ€.
arr[0] // 'apple'
arr[1] // 'banana'
arr[2] // 'orange'
λ°°μ΄μ μμμ κ°μ, μ¦ λ°°μ΄μ κΈΈμ΄λ₯Ό λνλ΄λ
length νλ‘νΌν°
λ₯Ό κ°λλ€
arr.length // -> 3
λ°°μ΄μ
μΈλ±μ€
μlength νλ‘νΌν°
λ₯Ό κ°κΈ° λλ¬Έμfor λ¬Έ
μ ν΅ν΄ μμ°¨μ μΌλ‘ μμμ μ κ·Όν μ μλ€.
// λ°°μ΄μ μν
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]); // 'apple' 'banana' 'orange'
}
μλ°μ€ν¬λ¦½νΈμλ λ°°μ΄μ΄λΌλ νμ μ μ‘΄μ¬νμ§ μλλ€. λ°°μ΄μ κ°μ²΄ νμ μ΄λ€.
λ°°μ΄μλ°°μ΄ λ¦¬ν°λ΄
Array μμ±μ ν¨μ
Array.of
Array.from
λ©μλλ‘ μμ±ν μ μλ€.
λ°°μ΄μ μμ±μ ν¨μλArray
μ΄λ©°, λ°°μ΄μ νλ‘ν νμ κ°μ²΄λArray.prototype
μ΄λ©°Array.prototype
μ λ°°μ΄μ μν λΉνΈμΈ λ©μλλ₯Ό μ 곡νλ€.
const arr = [1, 2, 3];
arr.constructor === Array // -> true
Object.getPrototypeOF(arr) === Array.prototype // -> true
κ΅¬λΆ | κ°μ²΄ | λ°°μ΄ |
---|---|---|
ꡬ쑰 | νλ‘νΌν° ν€μ νλ‘νΌν° κ° | μΈλ±μ€μ μμ |
κ°μ μ°Έμ‘° | νλ‘νΌν° ν€ | μΈλ±μ€ |
κ°μ μμ | X | O |
length νλ‘νΌν° | X | O |
λ°°μ΄μ μ₯μ μ μ²μλΆν° νΉμ λ§μ§λ§λΆν° μμμΌλ‘ μμμ μ κ·Όν μλ μμΌλ©°, νΉμ μμΉλΆν° μμ°¨μ μΌλ‘ μμμ μ κ·Όν μλ μλ€. μ΄λ λ°°μ΄μ΄
μΈλ±μ€
length νλ‘νΌν°
λ₯Ό κ°κΈ° λλ¬Έμ κ°λ₯νλ€.
μλ£κ΅¬μ‘°μμ λ§νλ λ°°μ΄μ λμΌν ν¬κΈ°μ λ©λͺ¨λ¦¬ 곡κ°μ΄ λΉνμμ΄ μ°μμ μΌλ‘ λμ°λ μλ£κ΅¬μ‘°λ₯Ό λ§νλ€. νλμ λ°μ΄ν° νμ μΌλ‘ ν΅μΌλμ΄ μμΌλ©° μλ‘ μ°μμ μΌλ‘ μΈμ ν΄ μλ€. μ΄λ₯Ό λ°μ§ λ°°μ΄μ΄λΌ νλ€.
μλ°μ€ν¬λ¦½νΈμ λ°°μ΄μ νν μκ³ μλ μΌλ°μ μΈ μλ―Έμ λ°°μ΄κ³Ό λ€λ₯΄λ€. μ¦, λ°°μ΄μ μμλ₯Ό μν κ°κ°μ λ©λͺ¨λ¦¬ 곡κ°μ λμΌν ν¬κΈ°λ₯Ό κ°μ§ μμλ λλ©°, μ°μμ μΌλ‘ μ΄μ΄μ Έ μμ§ μμ μλ μλ€. λ°°μ΄μ μμκ° μ°μμ μΌλ‘ μ΄μ΄μ Έ μμ§ μλ λ°°μ΄μ ν¬μ λ°°μ΄μ΄λΌ νλ€.
μλ°μ€ν¬λ¦½νΈμ λ°°μ΄μ μΌλ°μ μΈ λ°°μ΄μ λμμ νλ΄λΈ νΉμν κ°μ²΄λ€.
length νλ‘νΌν°
λ μμμ κ°μ, μ¦ λ°°μ΄μ κΈΈμ΄λ₯Ό λνλ΄λ 0 μ΄μμ μ μλ₯Ό κ°μΌλ‘ κ°λλ€.
[].length // -> 0
[1,2,3].length // -> 3
length νλ‘νΌν°
μ κ°μ λ°°μ΄μ μμλ₯Ό μΆκ°νκ±°λ μμ νλ©΄ μλ κ°±μ λλ€.
const arr [1, 2, 3];
console.log(arr.length); // 3
// μμ μΆκ°
arr.push(4);
// μμλ₯Ό μΆκ°νλ©΄ length νλ‘νΌν° κ°μ΄ μλ κ°±μ λλ€.
console.log(arr.length); // 4
// μμ μμ
arr.pop();
// μμλ₯Ό μμ νλ©΄ length νλ‘νΌν°μ κ°μ΄ μλ κ°±μ λλ€.
console.log(arr.length); // 3
length νλ‘νΌν°
μ κ°μ μμμ κ°μ, μ¦ λ°°μ΄μ κΈΈμ΄λ₯Ό λ°νμΌλ‘ κ²°μ λμ§λ§ μμμ μ«μ κ°μ λͺ μμ μΌλ‘ ν λΉν μλ μλ€.
νμ¬length νλ‘νΌν°
μ κ°λ³΄λ€ μμ μ«μ κ°μ ν λΉνλ©΄ λ°°μ΄μ κΈΈμ΄κ° μ€μ΄λ λ€.
const arr = [1, 2, 3, 4, 5];
// νμ¬ length νλ‘νΌν° κ°μΈ 5λ³΄λ€ μμ μ«μ κ° 3μ length νλ‘νΌν°μ ν λΉ
arr.length = 3;
// λ°°μ΄μ κΈΈμ΄κ° 5μμ 3μΌλ‘ μ€μ΄λ λ€.
console.log(arr); // [1, 2, 3]
μ£Όμ ν κ²μ νμ¬
length νλ‘νΌν°
μ κ°λ³΄λ€ ν° μ«μ κ°μ ν λΉνλ κ²½μ° μ΄λlength νλ‘νΌν°
μ κ°μ λ³κ²½λμ§λ§ μ€μ λ‘ λ°°μ΄μ κΈΈμ΄κ° λμ΄λμ§λ μλλ€.
const arr = [1]
// νμ¬ length νλ‘νΌν° κ°μΈ 1λ³΄λ€ ν° μ«μ κ° 3μ length νλ‘νΌν°μ ν λΉ
arr.length = 3;
// length νλ‘νΌν° κ°μ λ³κ²½λμ§λ§ μ€μ λ‘ λ°°μ΄μ κΈΈμ΄κ° λμ΄λμ§λ μλλ€.
console.log(arr.length); // 3
console.loga(arr); // [1, empty * 2]
μΌλ°μ μΈ λ°°μ΄μ
length
λ λ°°μ΄ μμμ κ°μ, μ¦ λ°°μ΄μ κΈΈμ΄μ μΈμ λ μΌμΉνλ€. νμ§λ§ ν¬μ λ°°μ΄μlength
μ λ°°μ΄ μμμ κ°μκ° μΌμΉνμ§ μλλ€. ν¬μ λ°°μ΄μlength
λ ν¬μ λ°°μ΄μ μ€μ μμ κ°μλ³΄λ€ μΈμ λ ν¬λ€.
λ°°μ΄μ μμ±ν κ²½μ°μλ ν¬μλ°°μ΄μ μμ±νμ§ μλλ‘ μ£Όμνμ λ°°μ΄μλ λ½μ νμ μ μμλ₯Ό μ°μμ μΌλ‘ μμΉμν€λ κ²μ΄ μ΅μ μ΄λ€.
λ°°μ΄ λ¦¬ν°λ΄
μ 0κ° μ΄μμ μμλ₯Ό μΌνλ‘ κ΅¬λΆνμ¬ λκ΄νΈ([]
)λ‘ λ¬Άλλ€. λν, κ°λ§ μ‘΄μ¬νλ€.
const arr = [ 1, 2, 3];
console.log(arr.length); // 3
λ°°μ΄ λ¦¬νΈλ¬
μ μμλ₯Ό νλλ μΆκ°νμ§ μμΌλ©΄ λ°°μ΄μ κΈΈμ΄, μ¦length νλ‘νΌν°
κ°μ΄ 0μΈ λΉ λ°°μ΄μ΄ λλ€.
const arr = [];
console.log(arr.length); // 0
λ°°μ΄ λ¦¬ν°λ΄
μ μμλ₯Ό μλ΅νλ©΄ ν¬μ λ°°μ΄μ΄ μμ±λλ€.
const arr = [1, , 3]; // ν¬μ λ°°μ΄
// ν¬μ λ°°μ΄μ lengthλ λ°°μ΄μ μ€μ μμ κ°μλ³΄λ€ μΈμ λ ν¬λ€.
console.log(arr.length); //3
console.log(arr); // [1, empty, 3]
console.log(arr[1); // undefined
Array μμ±μ
ν¨μλ μ λ¬λ μΈμμ κ°μμ λ°λΌ λ€λ₯΄κ² λμνλ―λ‘ μ£Όμ
1οΈβ£ μ λ¬λ μΈμκ° 1κ°μ΄κ³ μ«μμΈ κ²½μ° length νλ‘νΌν° κ°μ΄ μΈμμΈ λ°°μ΄μ μμ±νλ€.
const arr = new Array(10);
console.log(arr); // [empty * 10]
console.log(arr.length); // 10
μ΄λ μμ±λ λ°°μ΄μ ν¬μλ°°μ΄μ΄λ€.
length νλ‘νΌν°
κ°μ 0μ΄ μλμ§λ§ μ€μ λ‘ λ°°μ΄μ μμλ μ‘΄μ¬νμ§ μλλ€.
2οΈβ£ μ λ¬λ μΈμκ° μλ κ²½μ° λΉ λ°°μ΄μ μμ±νλ€. μ¦, λ°°μ΄ λ¦¬ν°λ΄ []
κ³Ό κ°λ€.
new Array(); // -> []
3οΈβ£ μ λ¬λ μΈμκ° 2κ° μ΄μμ΄κ±°λ μ«μκ° μλ κ²½μ° μμλ‘ κ°λ λ°°μ΄μ μμ±νλ€.
// μ λ¬λ μΈμκ° 2κ° μ΄μμ΄λ©΄ μΈμλ₯Ό μμλ‘ κ°λ λ°°μ΄μ μμ±νλ€.
new Array(1, 2, 3); // [1, 2, 3]
// μ λ¬λ μΈμκ° 1κ°μ§λ§ μ«μκ° μλλ©΄ μΈμλ₯Ό μμλ‘ κ°λ λ°°μ΄μ μμ±νλ€.
new Array({}); // -> [{}]
Array μμ±μ
ν¨μλnew μ°μ°μ
μ ν¨κ» νΈμΆνμ§ μλλΌλ, μ¦ μΌλ° ν¨μλ‘μ νΈμΆν΄λ λ°°μ΄μ μμ±νλ μμ±μ ν¨μλ‘ λμνλ€. μ΄λArray μμ±μ ν¨μ
λ΄λΆμμnew.target
μ νμΈνκΈ° λλ¬Έμ΄λ€.
Array(1, 2, 3); // -> [1, 2, 3]
ES6 μμ λμ λ
Array.of
λ©μλλ μ λ¬λ μΈμλ₯Ό μμλ‘ κ°λ λ°°μ΄μ μμ±νλ€.Array.of
λArray μμ±μ ν¨μ
μ λ€λ₯΄κ² μ λ¬λ μΈμκ° 1κ°μ΄κ³ μ«μμ΄λλΌλ μΈμλ₯Ό μμλ‘ κ°λ λ°°μ΄μ μμ±νλ€.
// μ λ¬λ μΈμκ° 1κ°μ΄κ³ μ«μμ΄λλΌλ μΈμλ₯Ό μμλ‘ κ°λ λ°°μ΄μ μμ±νλ€.
Array.of(1); // -> [1]
Array.of(1, 2, 3); // -> [1, 2, 3]
Array.of('stfing'); // -> ['string']
ES6μμ λμ λ
Array.from
λ©μλλμ μ¬ λ°°μ΄ κ°μ²΄
λλμ΄ν°λ¬λΈ κ°μ²΄
λ₯Ό μΈμλ‘ μ λ¬λ°μ λ°°μ΄λ‘ λ³ννμ¬ λ°ννλ€.
// μ μ¬ λ°°μ΄ κ°μ²΄λ₯Ό λ³ννμ¬ λ°°μ΄μ μμ±νλ€.
Array.from( { length: 2, 0 : 'a', 1: 'b' }); // -> ['a', 'b']
// μ΄ν°λ¬λΈμ λ³ννμ¬ λ°°μ΄μ μμ±νλ€. λ¬Έμμ΄μ μ΄ν°λ¬λΈμ΄λ€.
Array.from('Hello'); // -> ['H', 'e', 'l', 'l', 'o']
// Array.fromμ lengthλ§ μ‘΄μ¬νλ μ μ¬ λ°°μ΄ κ°μ²΄λ₯Ό μ λ¬νλ©΄ undefinedλ₯Ό μμλ‘ μ±μ΄λ€.
Array.from({ length: 3}); // -> [undefined, undefined, undefined]
// Array.fromμ λ λ²μ§Έ μΈμλ‘ μ λ¬ν μ½λ°± ν¨μμ λ°νκ°μΌλ‘ ꡬμ±λ λ°°μ΄μ λ°ννλ€.
Array.from({ length: 3}, (_, i) => i); // -> [0, 1, 2]
λ°°μ΄μ μμλ₯Ό μ°Έμ‘°ν λμλ λκ΄νΈ(
[]
) νκΈ°λ²μ μ¬μ©νλ€.
const arr = [1,2];
// μΈλ±μ€κ° 0μΈ μμλ₯Ό μ°Έμ‘°
console.log(arr[0]); // 1
// μΈλ±μ€κ° 1μΈ μμλ₯Ό μ°Έμ‘°
console.log(arr[1]); // 2
μ‘΄μ¬νμ§ μλ μμμ μ κ·Όνλ©΄
undefined
κ° λ°νλλ€.
const arr = [1, 2];
// μΈλ±μ€κ° 2μΈ μμλ₯Ό μ°Έμ‘°, λ°°μ΄ arrμλ μΈλ±μ€κ° 2μΈ μμκ° μ‘΄μ¬νμ§ μλλ€.
console.log(arr[2]); // undefined
κ°μ²΄μ νλ‘νΌν°λ₯Ό λμ μΌλ‘ μΆκ°ν μ μλ κ²μ²λΌ λ°°μ΄μλ μμλ₯Ό λμ μΌλ‘ μΆκ°ν μ μλ€. μ‘΄μ¬νμ§ μλ μΈλ±μ€λ₯Ό μ¬μ©ν΄ κ°μ ν λΉνλ©΄ μλ‘μ΄ μμκ° μΆκ°λλ€. μ΄λ
length
νλ‘νΌν° κ°μ μλ κ°±μ±λλ€.
cosnt arr = [0];
// λ°°μ΄ μμμ μΆκ°
arr[1] = 1;
console.log(arr); // [0, 1]
console.log(arr.length); // 2
νμ¬ λ°°μ΄μ
length νλ‘νΌν°
κ°λ³΄λ€ ν° μΈλ±μ€λ‘ μλ‘μ΄ μμλ₯Ό μΆκ°νλ©΄ ν¬μ λ°°μ΄μ΄ λλ€.
arr[100] = 100;
console.log(arr); // [0, 1, empty * 98, 100]
console.log(arr.length); // 101
μ΄λ―Έ μμκ° μ‘΄μ¬νλ μμμ κ°μ μ¬ν λΉνλ©΄ μμκ°μ΄ κ°±μ λλ€.
// μμκ°μ κ°±μ
arr[1] = 10;
console.log(arr); // [0, 10, empty * 98, 100]
μ μ μ΄μΈμ κ°μ μΈλ±μ€μ²λΌ μ¬μ©νλ©΄ μμκ° μμ±λλ κ²μ΄ μλλΌ νλ‘νΌν°κ° μμ±λλ€. μ΄λ μΆκ°λ νλ‘νΌν°λ
length νλ‘νΌν°
κ°μ μν₯μ μ£Όμ§ μλλ€.
const arr = [];
// λ°°μ΄ μμμ μΆκ°
arr[0] = 1;
arr['1'] = 2;
// νλ‘νΌν° μΆκ°
arr['foo'] = 3;
arr.bar = 4;
arr[1.1] = 5;
arr[-1] = 6;
console.log(arr); // [1, 2, foo: 3, bar: 4, '1.1': 5, '-1': 6]
// νλ‘νΌν°λ length μν₯μ μ£Όμ§ μλλ€.
console.log(arr.length); // 2
λ°°μ΄μ μ¬μ€ κ°μ²΄μ΄κΈ° λλ¬Έμ λ°°μ΄μ νΉμ μμλ₯Ό μμ νκΈ° μν΄
delete
μ°μ°μλ₯Ό μ¬μ©ν μ μλ€.
const arr = [1, 2, 3];
// λ°°μ΄ μμμ μμ
delete arr[1];
console.log(arr); // [1, empty, 3]
// length νλ‘νΌν°μ μν₯μ μ£Όμ§ μλλ€. μ¦, ν¬μ λ°°μ΄μ΄ λλ€.
console.log(arr.length); // 3
delete μ°μ°μ
λ ν¬μ λ°°μ΄μ λ§λλ―λ‘ μ¬μ©νμ§ μλ κ²μ΄ μ’λ€.
ν¬μ λ°°μ΄μ λ§λ€μ§ μμΌλ©΄μ λ°°μ΄μ νΉμ μμλ₯Ό μμ ν μμ νλ €λ©΄Array.prototype.splice
λ©μλλ₯Ό μ¬μ©νλ€.
const arr = [1, 2, 3];
// Array.prototype.splice(μμ λ₯Ό μμν μΈλ±μ€, μμ ν μμ μ)
// arr[1]λΆν° 1κ°μ μμλ₯Ό μ κ±°
arr.splice(1, 1);
console.log(arr); // [1, 3]
μλ°μ€ν¬λ¦½νΈλ λ°°μ΄μ λ€λ£° λ μ μ©ν λ€μν λΉνΈμΈ λ©μλλ₯Ό μ 곡νλ€.
Array μμ±μ
ν¨μλ μ μ λ©μλλ₯Ό μ 곡νλ©°, λ°°μ΄ κ°μ²΄μ νλ‘ν νμ μΈArray.prototype
μ νλ‘ν νμ λ©μλλ₯Ό μ 곡νλ€.
λ°°μ΄ λ©μλλ κ²°κ³Όλ¬Όμ λ°ννλ ν¨ν΄μ΄ λ κ°μ§μ΄λ―λ‘ μ£Όμκ° νμνλ€. **λ°°μ΄μλ μλ³Έ λ°°μ΄(λ°°μ΄ λ©μλλ₯Ό νΈμΆν λ°°μ΄, μ¦ λ°°μ΄ λ©μλμ ꡬν체 λ΄λΆμμthis
κ° κ°λ¦¬ν€λ κ°μ²΄)μ μ§μ λ³κ²½νλ λ©μλμ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νμ§ μκ³ μλ‘μ΄ λ°°μ΄μ μμ±νμ¬ λ°ννλ λ©μλκ° μλ€.
const arr = [1];
// push λ©μλλ μλ³Έ λ°°μ΄(arr)μ μ§μ λ³κ²½νλ€.
arr.push(2);
console.log(arr); // [1, 2]
// concat λ©μλλ μλ³Έ λ°°μ΄(arr)μ μ§μ λ³κ²½νμ§ μκ³ μλ‘μ΄ λ°°μ΄μ μμ±νμ¬ λ°ννλ€.
const result = arr.concat(3);
console.log(arr); // [1, 2]
console.log(result); // [1, 2, 3]
κ°κΈμ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νμ§ μν λ©μλλ₯Ό μ¬μ©νλ νΈμ΄ μ’λ€.
Array.isArray
λArray
μμ±μ ν¨μμ μ μ λ©μλλ€.
Array.isArray
λ©μλλ μ λ¬λ μΈμκ° λ°°μ΄μ΄λ©΄true
λ°°μ΄μ΄ μλλ©΄false
λ₯Ό λ°ννλ€.
// 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 })
indexOf λ©μλ
λ μλ³Έ λ°°μ΄μμ μΈμλ‘ μ λ¬λ μμλ₯Ό κ²μνμ¬ μΈλ±μ€λ₯Ό λ°ννλ€.
-1
μ λ°ννλ€.const arr = [1, 2, 2, 3];
// λ°°μ΄ arrμμ μμ 2λ₯Ό κ²μνμ¬ μ²« λ²μ§Έλ‘ κ²μλ μμμ μΈλ±μ€λ₯Ό λ°ννλ€.
arr.indexOf(2); // -> 1
// λ°°μ΄ arrμ μμ 4κ° μμΌλ―λ‘ -1μ λ°ννλ€.
arr.indexOf(4): // -> -1
// λ λ²μ§Έ μΈμλ κ²μμ μμν μΈλ±μ€λ€. λ λ²μ§Έ μΈμλ₯Ό μλ΅νλ©΄ μ²μλΆν° κ²μνλ€.
arr.indexOf(2, 2); // -> 2
indexOf λ©μλ
λ λ°°μ΄μ νΉμ μμκ° μ‘΄μ¬νλμ§ νμΈν λ μ μ©νλ€.
const foods = ['apple', 'banana', 'orange'];
// foods λ°°μ΄μ 'orange' μμκ° μ‘΄μ¬νλμ§ νμΈνλ€.
if (foods.indexOf('orange') === -1) {
// foods λ°°μ΄μ 'orange' μμκ° μ‘΄μ¬νμ§ μμΌλ©΄ 'orange' μμλ₯Ό μΆκ°νλ€.
foods.push('orange');
}
console.log(foods); // ["apple", "banana", "orange"]
indexOf λ©μλ
λμ ES7μμ λμ λArray.prototype.includes λ©μλ
λ₯Ό μ¬μ©νλ©΄ κ°λ μ±μ΄ μ’λ€.
const foods = ['apple', 'banana', 'orange'];
// foods λ°°μ΄μ 'orange' μμκ° μ‘΄μ¬νλμ§ νμΈνλ€.
if (!foods.includes('orange')) {
// foods λ°°μ΄μ 'orange' μμκ° μ‘΄μ¬νμ§ μμΌλ©΄ 'orange' μμλ₯Ό μΆκ°νλ€.
foods.push('orange');
}
console.log(foods); // ["apple", "banana", "orange"]
push λ©μλ
λ μΈμλ‘ μ λ¬λ°μ λͺ¨λ κ°μ μλ³Έ λ°°μ΄μ λ§μ§λ§ μμλ‘ μΆκ°νΉ λ³κ²½λlength νλ‘νΌν°
κ°μ λ°ννλ€.push λ©μλ
λ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
const arr = [1, 2];
// μΈμλ‘ μ λ¬λ°μ λͺ¨λ κ°μ μλ³Έ λ°°μ΄ arrμ λ§μ§λ§ μμλ‘ μΆκ°νΉ λ³κ²½λ length κ°μ λ°ννλ€.
let result = arr.push(3,4);
console.log(result); // 4
// push λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [1, 2, 3, 4]
λ§μ§λ§ μμμ μΆκ°ν μμκ° νλλΏμ΄λΌλ©΄
push λ©μλ
λ₯Ό μ¬μ©νμ§ μκ³length νλ‘νΌν°
λ₯Ό μ¬μ©νλ κ²μ΄ λ λΉ λ₯΄λ€.
const arr = [1, 2];
// arr.push(3)κ³Ό λμΌν μ²λ¦¬λ₯Ό νλ€. μ΄ λ°©λ²μ΄ push λ©μλλ³΄λ€ λΉ λ₯΄λ€.
arr[arr.length] = 3;
console.log(arr); // [1, 2, 3]
push λ©μλ
λ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ λΆμ ν¨κ³Όκ° μλ€. λ°λΌμpush λ©μλ
보λ€λ ES6μμ€νλ λ λ¬Έλ²
μ μ¬μ©νλ νΈμ΄ μ’λ€.
const arr = [1, 2];
// ES6 μ€νλ λ λ¬Έλ²
cosnt newArr = [...arr, 3];
console.log(newArr); // [1, 2, 3]
pop λ©μλ
λ μλ³Έ λ°°μ΄μμ λ§μ§λ§ μμλ₯Ό μ κ±°νκ³ μ κ±°ν μμλ₯Ό λ°ννλ€.pop λ©μλ
λ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
cosnt arr = [1, 2];
// μλ³Έ λ°°μ΄μμ λ§μ§λ§ μμλ₯Ό μ κ±°νκ³ μ κ±°ν μμλ₯Ό λ°ννλ€.
let result = arr.pop();
console.log(result); // 2
// popλ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [1]
unshift λ©μλ
λ μΈμλ‘ μ λ¬λ°μ λͺ¨λ κ°μ μλ³Έ λ°°μ΄μ μ λμ μμλ‘ μΆκ°νκ³ λ³κ²½λlength νλ‘νΌν° κ°
μ λ°ννλ€.unshift λ©μλ
λ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
const arr = [1, 2];
// μΈμλ‘ μ λ¬λ°μ λͺ¨λ κ°μ μλ³Έ λ°°μ΄μ μ λμ μμλ‘ μΆκ°νκ³ λ³κ²½λ length κ°μ λ°ννλ€.
let result = arr.unshift(3, 4);
console.log(result); // 4
// unshift λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [3,4,1,2]
unshift λ©μλ
λ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ λΆμ ν¨κ³Όκ° μλ€. λ°λΌμunshift λ©μλ
보λ€λ ES6μμ€νλ λ λ¬Έλ²
μ μ¬μ©νλ νΈμ΄ μ’λ€.
const arr = [1, 2];
// ES6 μ€νλ λ λ¬Έλ²
const newArr = [3, ...arr];
console.log(newArr); // [3, 1, 2]
shift λ©μλ
λ μλ³Έ λ°°μ΄μμ 첫 λ²μ§Έ μμλ₯Ό μ κ±°νκ³ λ°ννλ€.shift λ©μλ
λ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
const arr = [1, 2];
// μλ³Έ λ°°μ΄μμ 첫 λ²μ§Έ μμλ₯Ό μ κ±°νκ³ μ κ±°ν μμλ₯Ό λ°ννλ€.
let result = arr.shift();
console.log(result); // 1
// shift λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [2]
concat λ©μλ
μΈμλ‘ μ λ¬λ κ°(λ°°μ΄ λλ μμκ°)μ μλ³Έ λ°°μ΄μ λ§μ§λ§ μμλ‘ μΆκ°ν μλ‘μ΄ λ°°μ΄μ λ°ννλ€. μλ³Έ λ°°μ΄μ λ³κ²½λμ§ μλλ€.
const arr1 = [1, 2];
const arr2 = [3, 4];
// λ°°μ΄ arr2λ₯Ό μλ³Έ λ°°μ΄ arr1μ λ§μ§λ§ μμλ‘ μΆκ°ν μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
// μΈμλ‘ μ λ¬ν κ°μ΄ λ°°μ΄μΈ κ²½μ° λ°°μ΄μ ν΄μ²΄νμ¬ μλ‘μ΄ λ°°μ΄μ μμλ‘ μΆκ°νλ€.
let result = arr1.concat(arr2);
console.log(result); // [1, 2, 3, 4]
// μ«μλ₯Ό μλ³Έ λ°°μ΄ arr1μ λ§μ§λ§ μμλ‘ μΆκ°ν μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
result = arr1.concat(3);
console.log(result); // [1, 2, 3]
// λ°°μ΄ arr2μ μ«μλ₯Ό μλ³Έ λ°°μ΄ arr1μ λ§μ§λ§ μμλ‘ μΆκ°ν μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
result = arr1.concat(arr2, 5);
console.log(result); // [1, 2, 3, 4, 5]
// μλ³Έ λ°°μ΄μ λ³κ²½λμ§ μλλ€.
console.log(arr1); // [1, 2];
push
μunshift
λ©μλλ₯Ό μ¬μ©ν κ²½μ° μλ³Έ λ°°μ΄μ λ°λμ λ³μμ μ μ₯ν΄ λμ΄μΌ νλ©°concat λ©μλ
λ₯Ό μ¬μ©ν κ²½μ° λ°νκ°μ λ°λμ λ³μμ ν λΉλ°μμΌ νλ€.
const arr1 = [3, 4];
// unshift λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
// λ°λΌμ μλ³Έ λ°°μ΄μ λ³μμ μ μ₯ν΄ λμ§ μμΌλ©΄ λ³κ²½λ λ°°μ΄μ μ¬μ©ν μ μλ€.
arr1.unshift(1, 2);
// unshift λ©μλλ₯Ό μ¬μ©ν κ²½μ° μλ³Έ λ°°μ΄μ λ°λμ λ³μμ μ μ₯ν΄ λμ΄μΌ κ²°κ³Όλ₯Ό νμΈν μ μλ€.
console.log(arr1); // [1, 2, 3, 4]
// push λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
// λ°λΌμ μλ³Έ λ°°μ΄μ λ³μμ μ μ₯ν΄ λμ§ μμΌλ©΄ λ³κ²½λ λ°°μ΄μ μ¬μ©ν μ μλ€.
arr1.push(5, 6);
// push λ©μλλ₯Ό μ¬μ©ν κ²½μ° μλ³Έ λ°°μ΄μ λ°λμ λ³μμ μ μ₯ν΄ λμ΄μΌ κ²°κ³Όλ₯Ό νμΈν μ μλ€.
console.log(arr1); // [1, 2, 3, 4, 5, 6]
// unshiftμ push λ©μλλ concat λ©μλλ‘ λ체ν μ μλ€.
const arr2 = [3, 4];
// concat λ©μλλ μλ³Έ λ°°μ΄μ λ³κ²½νμ§ μκ³ μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
// arr1.unshift(1, 2)λ₯Ό λ€μκ³Ό κ°μ΄ λ체ν μ μλ€.
let result = [1, 2].concat(arr2);
console.log(result); // [1, 2, 3, 4]
// arr1.push(5, 6)λ₯Ό λ€μκ³Ό κ°μ΄ λ체ν μ μλ€.
result = result.concat(5, 6);
console.log(result); // [1, 2, 3, 4, 5, 6]
μΈμλ‘ μ λ¬λ°μ κ°μ΄ λ°°μ΄μΈ κ²½μ°
push
μunshift
λ©μλλ λ°°μ΄μ κ·Έλλ‘ μλ³Έ λ°°μ΄μ λ§μ§λ§/첫 λ²μ§Έ μμλ‘ μΆκ°νμλ§concat λ©μλ
λ μΈμλ‘ μ λ¬λ°μ λ°°μμ ν΄μ²΄νμ¬ μλ‘μ΄ λ°°μ΄μ λ§μ§λ§ μμλ‘ μΆκ°νλ€.
const arr = [3, 4];
// unshiftμ push λ©μλλ μΈμλ‘ μ λ¬λ°μ λ°°μ΄μ κ·Έλλ‘ μλ³Έ λ°°μ΄μ μμλ‘ μΆκ°νλ€
arr.unshift([1, 2]);
arr.push([5, 6]);
console.log(arr); // [[1, 2], 3, 4,[5, 6]]
// concat λ©μλλ μΈμλ‘ μ λ¬λ°μ λ°°μ΄μ ν΄μ²΄νμ¬ μλ‘μ΄ λ°°μ΄μ μμλ‘ μΆκ°νλ€
let result = [1, 2].concat([3, 4]);
result = result.concat([5, 6]);
console.log(result); // [1, 2, 3, 4, 5, 6]
concat λ©μλ
λ ES6μμ€νλ λ λ¬Έλ²
μΌλ‘ λ체ν μ μλ€. ES6μμ€νλ λ λ¬Έλ²
μ μΌκ΄μ± μκ² μ¬μ©νλ κ²μ κΆμ₯.
let result = [1, 2].concat([3, 4]);
console.log(result); // [1, 2, 3, 4]
// concat λ©μλλ ES6μ μ€νλ λ λ¬Έλ²μΌλ‘ λ체ν μ μλ€.
result = [...[1, 2], ...[3, 4]];
console.log(result); // [1, 2, 3, 4]
μλ³Έ λ°°μ΄μ μ€κ°μ μμλ₯Ό μΆκ°νκ±°λ μ€κ°μ μλ μμλ₯Ό μ κ±°νλ κ²½μ°
splice λ©μλ
λ₯Ό λ©μλλ₯Ό μ¬μ©νλ€.
splice λ©μλ
λ 3κ°μ 맀κ°λ³μκ° μμΌλ©° μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
1οΈβ£ start
μλ³Έ λ°°μ΄μ μμλ₯Ό μ κ±°νκΈ° μμν μΈλ±μ€λ€.
start
λ§ μ§μ νλ©΄start
λΆν° λͺ¨λ μμλ₯Ό μ κ±°. μμμΈ κ²½μ° λ°°μμ λμμμ μΈλ±μ€λ₯Ό λνλΈλ€. λ§μ½start
κ°-1
μ΄λ©΄ λ§μ§λ§ μμλ₯Ό κ°λ§κ³-n
μ΄λ©΄ λ§μ§λ§μμn
λ²μ§Έ μμλ₯Ό κ°λ¦¬ν¨λ€.
2οΈβ£ deleteCount
μλ³Έ λ°°μ΄μ μμλ₯Ό μ κ±°νκΈ° μμν μΈλ±μ€μΈ
start
λΆν° μ κ±°ν μμμ κ°μλ€.deleteCount
κ° 0μΈ κ²½μ° μλ¬΄λ° μμλ μ κ±°λμ§ μλλ€.(μ΅μ )
3οΈβ£items
μ κ±°ν μμΉμ μ½μ ν μμλ€μ λͺ©λ‘μ΄λ€. μλ΅ν κ²½μ° μλ³Έ λ°°μ΄μμ μμλ€μ μ κ²κΈ°λ§ νλ€(μ΅μ )
const arr = [1, 2, 3, 4];
// μλ³Έ λ°°μ΄μ μΈλ±μ€ 1λΆν° 2κ°μ μμλ₯Ό μ κ±°νκ³ κ·Έ μ리μ μλ‘μ΄ μμ 20, 30μ μ½μ
νλ€.
const result = arr.splice(1, 2, 20, 30);
// μ κ±°ν μμκ° λ°°μ΄λ‘ λ°νλλ€.
console.log(result); // [2, 3]
// splice λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [1, 20, 30, 4]
const arr = [1, 2, 3, 4];
// μλ³Έ λ°°μ΄μ μΈλ±μ€ 1λΆν° 0κ°μ μμλ₯Ό μ κ±°νκ³ κ·Έ μ리μ μλ‘μ΄ μμ 100μ μ½μ
νλ€.
const result = arr.splice(1, 0, 100);
// μλ³Έ λ°°μ΄μ΄ λ³κ²½λλ€.
console.log(arr); // [1, 100, 2, 3, 4]
// μ κ±°ν μμκ° λ°°μ΄λ‘ λ°νλλ€.
console.log(result); // []
const arr = [1, 2, 3, 4];
// μλ³Έ λ°°μ΄μ μΈλ±μ€ 1λΆν° 2κ°μ μμλ₯Ό μ κ±°νλ€.
const result = arr.splice(1, 2);
// μλ³Έ λ°°μ΄μ΄ λ³κ²½λλ€.
console.log(arr); // [1, 4]
// μ κ±°ν μμκ° λ°°μ΄λ‘ λ°νλλ€.
console.log(result); // [2, 3]
const arr = [1, 2, 3, 4];
// μλ³Έ λ°°μ΄μ μΈλ±μ€ 1λΆν° λͺ¨λ μμλ₯Ό μ κ±°νλ€.
const result = arr.splice(1);
// μλ³Έ λ°°μ΄μ΄ λ³κ²½λλ€.
console.log(arr); // [1]
// μ κ±°ν μμκ° λ°°μ΄λ‘ λ°νλλ€.
console.log(result); // [2, 3, 4]
λ°°μ΄μμ νΉμ μμλ₯Ό μ κ±°νλ €λ©΄
indexof λ©μλ
λ₯Ό ν΅ν΄ νΉμ μμμ μΈλ±μ€λ₯Ό μ·¨λν λ€μsplice λ©μλ
λ₯Ό μ¬μ©νλ€.
const arr = [1, 2, 3, 1, 2];
// λ°°μ΄ arrayμμ item μμλ₯Ό μ κ±°νλ€. item μμκ° μ¬λ¬ κ° μ‘΄μ¬νλ©΄ 첫 λ²μ§Έ μμλ§ μ κ±°νλ€.
function remove(array, item) {
// μ κ±°ν item μμμ μΈλ±μ€λ₯Ό μ·¨λνλ€.
const index = array.indexOf(item);
// μ κ±°ν item μμλ§ μλ€λ©΄ μ κ±°νλ€.
if(index !== -1) array.splice(index, 1);
return array;
}
console.log(remove(arr, 2)); // [1, 3, 1, 2]
console.log(remove(arr, 10)); // [1, 3, 1, 2]
filter λ©μλ
λ₯Ό μ¬μ©νμ¬ νΉμ μμλ₯Ό λͺ¨λ μ κ±°ν μλ μλ€.(μ€λ³΅ ν¬ν¨)
const arr = [1, 2, 3, 1, 2];
// λ°°μ΄ arrayμμ λͺ¨λ item μμλ₯Ό μ 건νλ€.
function removeAll(array, item) {
return array.filter(v => v !== item);
}
console.log(removeAll(arr, 2)); // [1, 3, 1]
slice λ©μλ
λ μΈμλ‘ μ λ¬λ λ²μμ μμλ€μ 볡μ¬νμ¬ λ°°μ΄λ‘ λ°ννλ€. μλ³Έ λ°°μ΄μ λ³κ²½λμ§ μλλ€.
slice λ©μλ
λ λ κ°μ 맀κ°λ³μλ₯Ό κ°λλ€.
1οΈβ£ start
볡μ¬λ₯Ό μμν μΈλ±μ€λ€. μμμΈ κ²½μ° λ°°μ΄μ λμμμ μΈλ±μ€λ₯Ό λνλΈλ€. μλ₯Ό λ€μ΄,
slice(-2)
λ λ°°μ΄μ λ§μ§λ§ λ κ°μ μμλ₯Ό 볡μ¬νμ¬ λ°°μ΄λ‘ λ°ννλ€.
2οΈβ£ end
볡μ¬λ₯Ό μ’ λ£ν μΈλ±μ€λ€ μ΄ μΈλ±μ€μ ν΄λΉνλ μμλ 볡μ¬λμ§ μλλ€
end
λ μλ΅κ°λ₯νλ©° μλ΅ μ κΈ°λ³Έκ°μlength νλ‘νΌν° κ°
μ΄λ€.
const arr = [1, 2, 3];
// arr[0]λΆν° arr[1] μ΄μ (arr[1] λ―Έν¬ν¨)κΉμ§ 볡μ¬νμ¬ λ°ννλ€.
arr.slice(0, 1); // -> [1]
// arr[1]λΆν° arr[2] μ΄μ (arr[2] λ―Έν¬ν¨)κΉμ§ 볡μ¬νμ¬ λ°ννλ€.
arr.slice(1, 2); // -> [2]
// μλ³Έμ λ³κ²½λμ§ μλλ€.
console.log(arr); // [1, 2, 3]
// arr[1]λΆν° μ΄νμ λͺ¨λ μμλ₯Ό 볡μ¬νμ¬ λ°ννλ€.
arr.slice(1); // -> [2, 3]
// λ°°μ΄μ λμμλΆν° μμλ₯Ό ν κ° λ³΅μ¬νμ¬ λ°ννλ€.
arr.slice(-1); // -> [3]
// λ°°μ΄μ λμμλΆν° μμλ₯Ό λ κ° λ³΅μ¬νμ¬ λ°ννλ€.
arr.slice(-2); // -> [2, 3]
slice λ©μλ
μ μΈμλ₯Ό λͺ¨λ μλ΅νλ©΄ μλ³Έ λ°°μ΄μ 볡μ¬λ³Έμ μμ±νμ¬ λ°ννλ€.
const arr = [1, 2, 3];
// μΈμλ₯Ό λͺ¨λ μλ΅νλ©΄ μλ³Έ λ°°μ΄μ 볡μ¬λ³Έμ μμ±νμ¬ λ°ννλ€.
const copy = arr.slice();
console.log(copy); // [1, 2, 3]
console.log(copy === arr); // false
μ΄λ μμ±λ 볡μ¬λ³Έμ
μμ 볡μ¬
λ₯Ό ν΅ν΄ μμ±λλ€.
join λ©μλ
λ μλ³Έ λ°°μ΄μ λͺ¨λ μμλ₯Ό λ¬Έμμ΄λ‘ λ³νν ν μΈμλ‘ μ λ¬λ°μ λ¬Έμμ΄, μ¦ κ΅¬λΆμλ‘ μ°κ²°ν λ¬Έμμ΄μ λ°ννλ€. ꡬλΆμλ μλ΅ κ°λ₯νλ©° κΈ°λ³Έ ꡬλΆμλμ½€λ§(,)
λ€.
const arr = [1, 2, 3, 4];
// κΈ°λ³Έ ꡬλΆμλ μ½€λ§λ€.
// μλ³Έ λ°°μ΄ arrμ λͺ¨λ μμλ₯Ό λ¬Έμμ΄λ‘ λ³νν ν κΈ°λ³Έ ꡬλΆμλ‘ μ°κ²°ν λ¬Έμμ΄μ λ°ννλ€.
arr.join(); // -> '1,2,3,4'
// μλ³Έ λ°°μ΄ arrμ λͺ¨λ μμλ₯Ό λ¬Έμμ΄λ‘ λ³νν ν, λΉ λ¬Έμμ΄λ‘ μ°κ²°ν λ¬Έμμ΄μ λ°ννλ€.
arr.join('') // -> '1234'
// μλ³Έ λ°°μ΄ arrμ λͺ¨λ μμλ₯Ό λ¬Έμμ΄λ‘ λ³νν ν, ꡬλΆμ ':'λ‘ μ°κ²°ν λ¬Έμμ΄μ λ°ννλ€.
arr.join(':'); // -> '1:2:3:4'
reverse λ©μλ
λ μλ³Έ λ°°μ΄μ μμλ₯Ό λ°λλ‘ λ€μ§λλ€. μ΄λ μλ³Έ λ°°μ΄μ΄ λ³κ²½λλ©° λ°νκ°μ λ³κ²½λ λ°°μ΄μ΄λ€.
cosnt arr = [1, 2, 3];
const result = arr.reverse();
// reverse λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [3, 2, 1]
// λ°νκ°μ λ³κ²½λ λ°°μ΄μ΄λ€.
console.log(result);; // [3, 2, 1]
ES6μμ λμ λ
fill λ©μλ
λ μΈμλ‘ μ λ¬λ°μ κ°μ λ°°μ΄μ μ²μλΆν° λκΉμ§ μμλ‘ μ±μ΄λ€. μ΄λ μλ³Έ λ°°μ΄μ΄ λ³κ²½λλ€.
const arr = [1, 2, 3];
// μΈμλ‘ μ λ¬λ°μ κ° 0μ λ°°μ΄μ μ²μλΆν° λκΉμ§ μμλ‘ μ±μ΄λ€.
arr.fill(0);
// fill λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [0, 0, 0]
λ λ²μ§Έ μΈμλ‘ μμ μ±μ°κΈ°λ₯Ό μμν μΈλ±μ€λ₯Ό μ λ¬ν μ μλ€.
const arr = [1, 2, 3];
// μΈμλ‘ μ λ¬λ°μ κ° 0μ λ°°μ΄μ μΈλ±μ€ 1λΆν° λκΉμ§ μμλ‘ μ±μ΄λ€.
arr(0, 1);
// fill λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [1, 0, 0]
μΈ λ²μ§Έ μΈμλ‘ μμ μ±μ°κΈ°λ₯Ό λ©μΆ μΈλ±μ€λ₯Ό μ λ¬ν μ μλ€.
const arr = [1, 2, 3, 4, 5];
// μΈμλ‘ μ λ¬λ°μ κ° 0μ λ°°μ΄μ μΈλ±μ€ 1λΆν° 3 μ΄μ (μΈλ±μ€ 3 λ―Έν¬ν¨)κΉμ§ μμλ‘ μ±μ΄λ€.
arr.fill(0, 1, 3);
// fill λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [1, 0, 0, 4, 5]
fill λ©μλ
λ₯Ό μ¬μ©νλ©΄ λ°°μ΄μ μμ±νλ©΄μ νΉμ κ°μΌλ‘ μμλ₯Ό μ±μΈ μ μλ€.
const arr = new Array(3);
console.log(arr); // [empty * 3]
// μΈμλ‘ μ λ¬λ°μ κ° 1μ λ°°μ΄μ μ²μλΆν° λκΉμ§ μμλ‘ μ±μ΄λ€.
const result = arr.fill(1);
// fill λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(arr); // [1, 1, 1]
// fill λ©μλλ λ³κ²½λ μλ³Έ λ°°μ΄μ λ°ννλ€.
console.log(result); // [1, 1, 1]
ES7μμ λμ λ
includes λ©μλ
λ λ°°μ΄ λ΄μ νΉμ μμκ° ν¬ν¨λμ΄ μλμ§ νμΈνμ¬true
λλfasle
λ₯Ό λ°ννλ€.
const arr = [1, 2, 3];
// λ°°μ΄μ μμ 2κ° ν¬ν¨λμ΄ μλμ§ νμΈνλ€.
arr.includes(2); // -> true
// λ°°μ΄μ μμ 100μ΄ ν¬ν¨λμ΄ μλμ§ νμΈνλ€.
arr.includes(100); // -> false
λ λ²μ§Έ μΈμλ‘ κ²μμ μμν μΈλ±μ€λ₯Ό μ λ¬ν μ μμΌλ©° κΈ°λ³Έκ°μ 0μ΄λ€.
const arr = [1, 2, 3];
// λ°°μ΄μ μμ 1μ΄ ν¬ν¨λμ΄ μλμ§ μΈλ±μ€ 1λΆν° νμΈνλ€.
arr.includes(1, 1); // -> false
// λ°°μ΄μ μμ 3μ΄ ν¬ν¨λμ΄ μλμ§ μΈλ±μ€ 2(arr.length - 1)λΆν° νμΈνλ€.
arr.includes(3, -1); // -> true
indexOf
λ©μλλ₯Ό μ¬μ©νμ¬λ λ°°μ΄λ΄μ νΉμ μμκ° ν¬ν¨λμ΄ μλμ§ νμΈ κ°λ₯νμ§λ§ λ°νκ°μ΄-1
μΈμ§λ νμΈν΄μνκ³ λ°°μ΄NaN
μ΄ ν¬ν¨λμ΄ μλμ§ νμΈν μ μλ€λ λ¬Έμ κ° μλ€.
[NaN].indexOf(NaN) !== -1; // -> false
[NaN].includes(NaN); // -> true
ES10 μμ λμ λ
flat λ©μλ
λ μΈμλ‘ μ λ¬ν κΉμ΄λ§νΌ μ¬κ·μ μΌλ‘ λ°°μ΄μ ννννλ€.
[1, [2, 3, 4, 5]].flat(); // -> [1, 2, 3, 4, 5]
// μ€μ²© λ°°μ΄μ ννννκΈ° μν κΉμ΄ κ°μ κΈ°λ³Έκ°μ 1μ΄λ€.
[1, [2, [3, [4]]]].flat(); // -> [1, 2, [3, [4]]]
[1, [2, [3, [4]]]].flat(1); // -> [1, 2, [3, [4]]]
// μ€μ²© λ°°μ΄μ ννννκΈ° μν κΉμ΄ κ°μ 2λ‘ μ§μ νμ¬ 2λ¨κ³ κΉμ΄κΉμ§ ννννλ€.
[1, [2, [3, [4]]]].flat(2); // -> [1, 2, 3, [4]]
// 2λ² νννν κ²κ³Ό λμΌνλ€.
[1, [2, [3, [4]]]].flat().flat(); // -> [1, 2, 3, [4]]
// μ€μ²© λ°°μ΄μ ννννκΈ° μν κΉμ΄ κ°μ Infinityλ‘ μ§μ νμ¬ μ€μ²© λ°°μ΄ λͺ¨λλ₯Ό ννννλ€.
[1, [2, [3, [4]]]].flat(Infinity); // -> [1, 2, 3, 4]
κ³ μ°¨ ν¨μ
λ ν¨μλ₯Ό μΈμλ‘ μ λ¬λ°κ±°λ ν¨μλ₯Ό λ°ννλ ν¨μλ₯Ό λ§νλ€. μλ°μ€ν¬λ¦½νΈμ ν¨μλμΌκΈ κ°μ²΄
μ΄λ―Έλ‘ ν¨μλ₯Ό κ°μ²λΌ μΈμλ‘ μ λ¬ν μ μμΌλ©° λ°νν μλ μλ€.
κ³ μ°¨ ν¨μ
λ μΈλΆ μνμ λ³κ²½μ΄λ κ°λ³ λ°μ΄ν°λ₯Ό νΌνκ³ λΆλ³μ±μ μ§ν₯νλ ν¨μν νλ‘κ·Έλλ°μ κΈ°λ°μ λκ³ μλ€.
sort λ©μλ
λ λ°°μ΄μ μμλ₯Ό μ λ ¬νλ€. μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ©° μ λ ¬λ λ°°μ΄μ λ°ννλ€.
sort λ©μλ
λ κΈ°λ³Έμ μΌλ‘ μ€λ¦μ°¨μμΌλ‘ μμλ₯Ό μ λ ¬νλ€.
const fruits = ['Banana', 'Orange', 'Apple'];
// μ€λ¦μ°¨μ(ascending) μ λ ¬
fruits.sort();
// sort λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(fruits); // ['Apple', 'Banana', 'Orange']
const fruits = ['λ°λλ', 'μ€λ μ§', 'μ ν'];
// μ€λ¦μ°¨μ(ascending) μ λ ¬
fruits.sort();
// sort λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(fruits); // ['λ°λλ', 'μ¬κ³Ό', 'μ€λ μ§']
λ΄λ¦¬λ§μμΌλ‘ μμλ₯Ό μ λ ¬νλ €λ©΄
sort λ©μλ
λ₯Ό μ¬μ©νμ¬ μ€λ¦μ°¨μμΌλ‘ μ λ ¬ν νreverse λ©μλ
λ₯Ό μ¬μ©νμ¬ μμμ μμλ₯Ό λ€μ§λλ€.
const fruits = ['Banana', 'Orange', 'Apple'];
// μ€λ¦μ°¨μ(ascending) μ λ ¬
fruits.sort();
// sort λ©μλλ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(fruits); // ['Apple', 'Banana', 'Orange']
// λ΄λ¦Όμ°¨μ(descending) μ λ ¬
fruits.reverse();
// reverse λ©μλλ‘ μλ³Έ λ°°μ΄μ μ§μ λ³κ²½νλ€.
console.log(fruits); // ['Orange', 'Banana', 'Apple']
μ«μ μμλ‘ μ΄λ£¨μ΄μ§ λ°°μ΄μ μ λ ¬ν λλ μ£Όμκ° νμνλ€.
const points = [40, 100, 1, 5, 2, 25, 10];
points.sort();
// μ«μ μμλ€λ‘ μ΄λ£¨μ΄μ§ λ°°μ΄μ μλνλλ‘ μ λ ¬λμ§ μλλ€.
console.log(points);
sort λ©μλ
μ κΈ°λ³Έ μ λ ¬ μμλ μ λμ½λ μ½λ ν¬μΈνΈμ μμλ₯Ό λ°λ₯Έλ€. μ«μ νμ μ΄λΌ ν μ§λΌλ λ°°μ΄μ μμλ₯Ό μΌμμ μΌλ‘ λ¬Έμμ΄λ‘ λ³νν ν μ λμ½λ μ½λ ν¬μΈν°μ μμλ₯Ό κΈ°μ€μΌλ‘ μ λ ¬νλ€.
λ°λΌμ μ«μμμλ₯Ό μ λ ¬ν λλsort λ©μλ
μ μ λ ¬ μμλ₯Ό μ μνλ λΉκ΅ ν¨μλ₯Ό μΈμλ‘ μ λ¬ν΄μΌ νλ€.
λΉκ΅ ν¨μλμμ
λμμ
λλ0
μ λ°νν΄μΌ νλ€. λΉκ΅ ν¨μμ λ°νκ°μ΄0
λ³΄λ€ μμΌλ©΄ λΉκ΅ν¨μμ 첫 λ²μ§Έ μΈμλ₯Ό μ°μ νμ¬ μ λ ¬νκ³0
μ΄λ©΄ μ λ ¬νμ§ μμΌλ©°0
λ³΄λ€ ν¬λ©΄ λλ²μ§Έ μΈμλ₯Ό μ°μ νμΌ μ λ ¬νλ€.
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]
// μ«μ λ°°μ΄μμ μ΅μ/μ΅λκ° μ·¨λ
console.log(points[0], points[points.length - 1]); // 1 100
// μ«μ λ°°μ΄μ λ΄λ¦Όμ°¨μ μ λ ¬. λΉκ΅ ν¨μμ λ°νκ°μ΄ 0λ³΄λ€ μμΌλ©΄ bλ₯Ό μ°μ νμ¬ μ λ ¬νλ€.
points.sort((a,b) => b - a);
console.log(points); // [100, 40, 25, 10, 5, 2, 1]
// μ«μ λ°°μ΄μμ μ΅μ/μ΅λκ° μ·¨λ
console.log(points[points.length - 1], points[0]); // 1 100
κ°μ²΄λ₯Ό μμλ‘ κ°λ λ°°μ΄μ μ λ ¬νλ μμ λ λ€μκ³Ό κ°λ€.
const todos = [
{ id: 4, content: 'JavaScript' },
{ id: 1, content: 'HTML' },
{ id: 2, content: 'CSS' }
];
// λΉκ΅ ν¨μ. 맀κ°λ³μ keyλ νλ‘νΌν° ν€λ€.
function compare(key) {
// νλ‘νΌν° κ°μ΄ λ¬Έμμ΄μΈ κ²½μ° - μ°μ μ°μ°μΌλ‘ λΉκ΅νλ©΄ NaNμ΄ λμ€λ―λ‘ λΉκ΅ μ°μ°μ μ¬μ©νλ€.
// λΉκ΅ ν¨μλ μμ/μμ/0μ λ°ννλ©΄ λλ―λ‘ - μ°μ μ°μ° λμ λΉκ΅ μ°μ°μ μ¬μ©ν μ μλ€.
return (a, b) => (a[key] > b[key] ? 1 : (a[key] < b[key] ? -1 : 0));
}
// idλ₯Ό κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬
todos.sort(compare('id'));
console.log(todos);
/*
[
{ id: 1, content: 'HTML' },
{ id: 2, content: 'CSS' },
{ id: 4, content: 'JavaScript' }
]
*/
// contentλ₯Ό κΈ°μ€μΌλ‘ μ€λ¦μ°¨μ μ λ ¬
todos.sort(compare('content'));
console.log(todos);
/*
[
{ id: 2, content: 'CSS' },
{ id: 1, content: 'HTML' },
{ id: 4, content: 'JavaScript' }
]
*/
for λ¬Έ
μ λ°λ³΅μ μν λ³μλ₯Ό μ μΈν΄μΌ νλ©° 쑰건μκ³Ό μ¦κ°μμΌλ‘ μ΄λ£¨μ΄μ Έ μμ΄μ ν¨μν νλ‘κ·Έλλ°μ΄ μΆκ°νλ λ°μ λ§μ§ μλλ€.
const numbers = [1, 2, 3];
const pows = [];
// forλ¬ΈμΌλ‘ λ°°μ΄ μν
for(let i = 0; i < numbers.length; i++) }
pows.push(numbers[i] ** 2);
}
console.log(pows); // [1, 4, 9]
forEach λ©μλ
λfor λ¬Έ
μ λ체ν μ μλ κ³ μ°¨ ν¨μλ€.forEach λ©μλ
λ μμ μ λ΄λΆμμ λ°λ³΅λ¬Έμ μ€ννλ€.
const numbers = [1, 2, 3];
const pows = [];
// forEach λ©μλλ numbers λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνλ€.
numbers.forEach(item => pows.push(item ** 2);
console.log(pows); // [1, 4, 9]
// forEach λ©μλλ μ½λ°± ν¨μλ₯Ό νΈμΆνλ©΄μ 3κ°(μμκ°, μΈλ±μ€, this)μ μΈμλ₯Ό μ λ¬νλ€.
[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]
*/
JSON.stringify λ©μλ
λ κ°μ²΄λ₯ΌJSON ν¬λ§·
μ λ¬Έμμ΄λ‘ λ³ννλ€.
forEach λ©μλ
λ μλ³Έ λ°°μ΄(forEach λ©μλ
λ₯Ό νΈμΆν λ°°μ΄, μ¦this
)μ λ³κ²½νμ§ μλλ€. νμ§λ§ μ½λ°±ν¨μλ₯Ό ν΅ν΄ μλ³Έ λ°°μ΄μ λ³κ²½ν μ λ μλ€.
const numbers = [1, 2, 3];
// forEach λ©μλλ μλ³Έ λ°°μ΄μ λ³κ²½νμ§ μμ§λ§ μ½λ°± ν¨μλ₯Ό ν΅ν΄ μλ³Έ λ°°μ΄μ λ³κ²½ν μλ μλ€.
// μ½λ°± ν¨μμ μΈ λ²μ§Έ 맀κ°λ³μ arrμ μλ³Έ λ°°μ΄ numbersλ₯Ό κ°λ¦¬ν¨λ€.
// λ°λΌμ μ½λ°± ν¨μμ μΈ λ²μ§Έ 맀κ°λ³μ arrμ μ§μ λ³κ²½νλ©΄ μλ³Έ λ°°μ΄ numbersκ° λ³κ²½λλ€.
numbers.forEach((item, index, arr) => { arr[index] = item ** 2; });
console.log(numbers); // [1, 4, 9]
forEach λ©μλ
μ λ°νκ°μ μΈμ λundefined
λ€.
const result = [1, 2, 3].forEach(console.log);
console.log(result); // undefined
forEach λ©μλ
μ λ λ²μ§Έ μΈμλ‘forEach λ©μλ
μ μ½λ°± ν¨μ λ΄λΆμμthis
λ‘ μ¬μ©ν κ°μ²΄λ₯Ό μ λ¬ν μ μλ€.
class Numbers {
numberArray = [];
multiply(arr) {
arr.forEach(function (item) {
this.numberArray.push(item * item);
}, this);
}
}
const numbers = new Numbers();
numbers.multiply([1, 2, 3]);
console.log(numbers.numberArray); //[1, 4, 9]
λ λμ λ°©λ²μ ES6μ νμ΄ν ν¨μλ₯Ό μ¬μ©νλ κ²
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]
forEach λ©μλ
λfor λ¬Έ
μ λΉν΄ μ±λ₯μ΄ μ’μ§λ μμ§λ§ κ°λ μ±μ λ μ’λ€. λ°λΌμ μμκ° λλ¨ν λ§μ λ°°μ΄μ μννκ±°λ μκ°μ΄ λ§μ΄ 걸리λ 볡μ‘ν μ½λ λλ λμ μ±λ₯μ΄ νμν κ²½μ°κ° μλλΌλ©΄for λ¬Έ
λμforEach λ©μλ
λ₯Ό μ¬μ©ν κ²μ κΆμ₯νλ€.
map λ©μλ
λ μμ μ νΈμΆν λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ μΈμλ‘ μ λ¬λ°μ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνλ€. κ·Έλ¦¬κ³ μ½λ°± ν¨μμ λ°νκ°λ€λ‘ ꡬμ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ€. μ΄λ μλ³Έ λ°°μ΄μ λ³κ²½λμ§ μλλ€.
const numbers = [1, 4, 9];
// map λ©μλλ numbers λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνλ€.
// κ·Έλ¦¬κ³ μ½λ°± ν¨μμ λ°νκ°λ€λ‘ ꡬμ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
const roots = numbers.map(item => Math.sqrt(item));
// μ μ½λλ λ€μκ³Ό κ°λ€.
// const roots = numbers.map(Mat.sqrt);
// map λ©μλλ μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
console.log(roots); // [ 1, 2, 3]
// map λ©μλλ μλ³Έ λ°°μ΄μ λ³κ²½νμ§ μλλ€.
console.log(numbers); // [ 1, 4, 9]
forEach λ©μλ
μmap λ©μλ
μ 곡ν΅μ μ μμ μ νΈμΆν λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ μΈμλ‘ μ λ¬λ°μ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνλ€λ κ²μ΄λ€.
νμ§λ§forEach λ©μλ
λ μΈμ λundefined
λ₯Ό λ°ννκ³map λ©μλ
λ μ½λ°± ν¨μμ λ°νκ°λ€λ‘ ꡬμ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ μ°¨μ΄κ° μλ€.
λ€μλ§ν΄,forEach λ©μλ
λ λ¨μν λ°λ³΅λ¬Έμ λ체νκΈ° μν κ³ μ°¨ ν¨μμ΄κ³ ,map λ©μλ
λ μμκ°μ λ€λ₯Έ κ°μΌλ‘ 맀νν μλ‘μ΄ λ°°μ΄μ μμ±νκΈ° μν κ³ μ°¨ ν¨μλ€.
map λ©μλ
κ° μμ±νμ¬ λ°ννλ μλ‘μ΄ λ°°μ΄μlength νλ‘νΌν° κ°
μmap λ©μλ
λ₯Ό νΈμΆν λ°°μ΄μlength νλ‘νΌν° κ°
κ³Ό λ°λμ μΌμΉνλ€. μ¦,map λ©μλ
λ₯Ό νΈμΆν λ°°μ΄κ³Όmap λ©μλ
κ° μμ±νμ¬ λ°νν λ°°μ΄μ1:1
맀ννλ€.
map λ©μλ
μ μ½λ°± ν¨μλmap λ©μλ
λ₯Ό νΈμΆν λ°°μ΄μ μμκ°κ³Ό μΈλ±μ€,map λ©μλ
λ₯Ό νΈμΆν λ°°μ΄ μ체, μ¦this
λ₯Ό μμ°¨μ μΌλ‘ μ λ¬λ°μ μ μλ€.
// map λ©μλλ μ½λ°±ν¨μλ₯Ό νΈμΆνλ©΄μ 3κ°(μμκ°, μΈλ±μ€, this)μ μΈμλ₯Ό μ λ¬νλ€.
[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]
*/
map λ©μλ
λ λ²μ§Έ μΈμλ‘map λ©μλ
μ μ½λ°± ν¨μ λ΄λΆμμthis
λ‘ μ¬μ©ν κ°μ²΄λ₯Ό μ λ¬ν μ μλ€.
class Prefixer {
constructor(prefix) {
this.prefix = prefix
}
add(arr) {
return arr.map(function (item) {
// μΈλΆμμ thisλ₯Ό μ λ¬νμ§ μμΌλ©΄ thisλ undefinedλ₯Ό κ°λ¦¬ν¨λ€.
return this.prefix + item;
}, this); // map λ©μλμ μ½λ°± ν¨μ λ΄λΆμμ thisλ‘ μ¬μ©ν κ°μ²΄λ₯Ό μ λ¬
}
}
const prefixer = new Prefixer('-webkit-')
console.log(prefixer.add(['a', 'b']))
// [ '-webkit-a', '-webkit-b' ]
λ λμ λ°©λ²μ ES6μ νμ΄ν ν¨μλ₯Ό μ¬μ©νλ κ².
class Prefixer {
constructor(prefix) {
this.prefix = prefix
}
add(arr) {
// νμ΄ν ν¨μ λ΄λΆμμ thisλ₯Ό μ°Έμ‘°νλ©΄ μμ μ€μ½νμ thisλ₯Ό κ·Έλλ‘ μ°Έμ‘°νλ€
return arr.map(item => this.prefix + item);
}
}
const prefixer = new Prefixer('-webkit-')
console.log(prefixer.add(['a', 'b']))
// [ '-webkit-a', '-webkit-b' ]
filter λ©μλ
λ μμ μ νΈγ γΉν λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ μΈμλ‘ μ λ¬λ°μ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνλ€. κ·Έλ¦¬κ³ μ½λ°± ν¨μμ λ°νκ°μ΄ trueμΈ μμλ‘λ§ κ΅¬μ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ€. μ΄λ μλ³Έ λ°°μ΄μ λ³κ²½λμ§ μλλ€.
const numbers = [1, 2, 3, 4, 5];
// filter λ©μλλ numbers λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©΄μ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνλ€.
// κ·Έλ¦¬κ³ μ½λ°± ν¨μμ λ°νκ°μ΄ trueμΈ μμλ‘λ§ κ΅¬μ±λ μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
// λ€μμ κ²½μ° numbers λ°°μ΄μμ νμμΈ μμλ§ νν°λ§νλ€(1μ trueλ‘ νκ°λλ€.)
const odds = number.filter(item => item % 2);
console.log(odds); // [1, 3, 5]
filter λ©μλ
κ° μμ±νμ¬ λ°νν μλ‘μ΄ λ°°μ΄μlength νλ‘νΌν° κ°
μfilter λ©μλ
λ₯Ό νΈμΆν λ°°μ΄μlength νλ‘νΌν° κ°
κ³Ό κ°κ±°λ μλ€.
filter λ©μλ
μ μ½λ°± ν¨μλfilter λ©μλ
λ₯Ό νΈμΆν λ°°μ΄μ μμκ°κ³Ό μΈλ±μ€,filter λ©μλ
λ₯Ό νΈμΆν λ°°μ΄ μ체, μ¦this
λ₯Ό μμ°¨μ μΌλ‘ μ λ¬λ°μ μ μλ€.
// filter λ©μλλ μ½λ°± ν¨μλ₯Ό νΈμΆνλ©΄μ 3κ°(μμκ°, μΈλ±μ€, this)μ μΈμλ₯Ό μ λ¬νλ€.
[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]
*/
filter λ©μλ
λ λ²μ§Έ μΈμλ‘filter λ©μλ
μ μ½λ°± ν¨μ λ΄λΆμμthis
λ‘ μ¬μ©ν κ°μ²΄λ₯Ό μ λ¬ν μ μλ€.
λ λμ λ°©λ²μΌλ‘ νμ΄ν ν¨μλ₯Ό μ¬μ©ν μ μλ€.
class Users {
constructor() {
this.users = [
{ id: 1, name: 'Lee'},
{ id: 2, name 'Kim'}
];
}
// μμ μΆμΆ
findById(id) {
// idκ° μΌμΉνλ μ¬μ©μλ§ λ°ννλ€.
return this.users.filter(user => user.id === id)
}
// μμ μ κ±°
remove(id) {
// idκ° μΌμΉνμ§ μλ μ¬μ©μλ₯Ό μ κ±°νλ€.
this.users = this.users.filter(user => user.id !== id)
}
}
const users = new Users();
let user = users.findById(1)
console.log(user); // [{ id:1, name: 'Lee'}]
// idκ° 1μΈ μ¬μ©μλ₯Ό μ κ±°νλ€.
users.remove(1);
user = user.findById(1);
console.log(user)
reduce λ©μλ
λ μμ μ νΈμΆν λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©° μΈμλ‘ μ λ¬λ°μ μ½λ°± ν¨μλ₯Ό λ°λ³΅ νΈμΆνλ€. κ·Έλ¦¬κ³ μ½λ°± ν¨μμ λ°νκ°μ λ€μ μν μμ μ½λ°± ν¨μμ 첫 λ²μ§Έ μΈμλ‘ μ λ¬νλ©΄μ μ½λ°± ν¨μλ₯Ό νΈμΆνμ¬ νλμ κ²°κ³Όκ°μ λ§λ€μ΄ λ°ννλ€. μ΄λ μλ³Έ λ°°μ΄μ λ³κ²½λμ§ μλλ€.
reduce λ©μλ
λ 첫 λ²μ§Έ μΈμλ‘ μ½λ°± ν¨μ, λ λ²μ§Έ μΈμλ‘ μ΄κΈ°κ°μ μ λ¬λ°λλ€.reuce λ©μλ
μ μ½λ°± ν¨μμλ 4κ°μ μΈμ, μ΄κΈ°κ° λλ μ½λ°± ν¨μμ μ΄μ λ°νκ°,reduce λ©μλ
λ₯Ό νΈμΆν λ°°μ΄μ μμκ°κ³Ό μΈλ±μ€,reduce λ©μλ
λ₯Ό νΈμΆν λ°°μ΄ μ체, μ¦this
κ° μ λ¬λλ€.
// 1λΆν° 4κΉμ§ λμ μ ꡬνλ€.
const sum = [1, 2, 3, 4].reduce((accumulator, currentValue, index, array) => accumulator + currentValue, 0);
console.log(sum); // 10
reduce λ©μλ
μ μ½λ°± ν¨μλ 4κ°μ μΈμλ₯Ό μ λ¬λ°μ λ°°μ΄μlength
λ§νΌ μ΄ 4ν νΈμΆλλ€.
reduce λ©μλ
λ μμ μ νΈμΆν λ°°μ΄μ λͺ¨λ μμλ₯Ό μννλ©° νλμ κ²°κ³Όκ°μ ꡬν΄μΌ νλ κ²½μ° μ¬μ©νλ€.
const values = [1, 2, 3, 4, 5, 6];
const average = values.reduce((acc, cur, i, { length }) => {
// λ§μ§λ§ μνκ° μλλ©΄ λμ κ°μ λ°ννκ³ λ§μ§λ§ μνλ©΄ λμ κ°μΌλ‘ νκ· μ κ΅¬ν΄ λ°ννλ€.
return i === length - 1 ? (acc + cur) / length : acc + cur;
}, 0);
console.log(average); // 3.5
const values = [1, 2, 3, 4, 5, 6];
const max = values.reduce((acc, cur => (acc > cur ? acc : cur), 0);
console.log(max);
μ΅λκ°μ ꡬν λλ
reduce λ©μλ
보λ€Math.max λ©μλ
λ₯Ό μ¬μ©νλ λ°©λ²μ΄ λ μ§κ΄μ μ΄λ€.
const values = [1, 2, 3, 4, 5, 6];
const max = Math.max(...values);
var max = Math.max.apply(null.values);
console.log(max); // 5
const fruits = ['banana', 'apple', 'orange', 'orange', 'apple'];
const count = fruits.reduce((acc, cur) => {
// 첫 λ²μ§Έ μν μ accλ μ΄κΈ°κ°μΈ {}μ΄κ³ curμ 첫 λ²μ§Έ μμμΈ 'banana'λ€.
// μ΄κΈ°κ°μΌλ‘ μ λ¬λ°μ λΉ κ°μ²΄μ μμκ°μΈ curμ νλ‘νΌν° ν€λ‘, μμμ κ°μλ₯Ό νλ‘νΌν° κ°μΌλ‘
// ν λΉνλ€. λ§μ½ νλ‘νΌν° κ°μ΄ undefined(μ²μ λ±μ₯νλ μμ)μ΄λ©΄ νλ‘νΌν° κ°μ 1λ‘ μ΄κΈ°ννλ€.
acc[cur] = (acc[cur] || 0) + 1;
return acc;
}, {});
// μ½λ°± ν¨μλ μ΄ 5λ² νΈμΆλκ³ λ€μκ³Ό κ°μ΄ κ²°κ³Όκ°μ λ°ννλ€.
/*
{banana: 1} => {banana: 1, apple: 1} => {banana: 1, apple: 1, orange: 1}
=> {banana: 1, apple: 1, orange: 2} => {banana: 1, apple: 2, orange: 2}
*/
console.log(count); // { banana: 1, apple: 2, orange: 2 }
const values = [1, [2, 3], 4, [5, 6]];
const flatten values.reduce((acc,cur) => acc.concat(cur), []);
// [1] => [1, 2, 3] => [1, 2, 3, 4] => [1, 2, 3, 4, 5, 6]
console.log(flatten); // [1, 2, 3, 4, 5, 6]
μ€μ²© λ°°μ΄μ νννν λλ
Array.prototype.flat λ©μλ
λ₯Ό μ¬μ©νλ λ°©λ²μ΄ λ μ§κ΄μ μ΄λ€.
[1, [2, 3, 4, 5]].flat(); // [1, 2, 3, 4, 5]
// μΈμ 2λ μ€μ²© λ°°μ΄μ ννννκΈ° μν κΉμ΄ κ°μ΄λ€.
[1, [2, 3, [4, 5]]].flat(2); // -> [1, 2, 3, 4, 5]
const values = [1, 2, 1, 3, 5, 4, 5, 3, 4, 4];
const result = values.reduce((unique, val, i, _values) =>
// νμ¬ μν μ€μΈ μμμ μΈλ±μ€ iκ° valμ μΈλ±μ€μ κ°λ€λ©΄ valμ μ²μ μννλ μμλ€.
// νμ¬ μν μ€μΈ μμμ μΈλ±μ€ iκ° valμ μΈλ±μ€μ λ€λ₯΄λ€λ©΄ valμ μ€λ³΅λ μμλ€.
// μ²μ μννλ μμλ§ μ΄κΈ°κ° []κ° μ λ¬λ unique λ°°μ΄μ λ΄μ λ°ννλ©΄ μ€λ³΅λ μμλ μ κ±°λλ€.
_values.indexOf(val) === i ? [...unique, val ] : unique,
[]
);
console.log(result); // [1, 2, 3, 5, 4]
μ€λ³΅ μμλ₯Ό μ κ±°ν λλ
reduce λ©μλ
보λ€filter λ©μλ
λ₯Ό μ¬μ©νλ λ°©λ²μ΄ λ μ§κ΄μ μ΄λ€.
const values = [1, 2, 1, 3, 5, 4, 5, 3, 4, 4];
// νμ¬ μν μ€μΈ μμμ μΈλ±μ€ iκ° valμ μΈλ±μ€μ κ°λ€λ©΄ valμ μ²μ μννλ μμλ€. μ΄ μμλ§ νν°λ§νλ€.
const result = values.filter((val, i, _values) => _values.indexOf(value) === i );
console.log(result); // [1, 2, 3, 5, 4]
λλ μ€λ³΅λμ§ μλ μ μΌν κ°λ€μ μ§ν©μΈ
Set
μ μ¬μ©ν μλ μλ€. μ€λ³΅ μμλ₯Ό μ κ±°ν λλ μ΄ λ°©λ²μ μΆμ²νλ€.
const values = [1, 2, 1, 3, 5, 4, 5, 3, 4, 4];
// μ€λ³΅μ νμ©νμ§ μλ Set κ°μ²΄μ νΉμ±μ νμ©νμ¬ λ°°μ΄μμ μ€λ³΅λ μμλ₯Ό μ κ±°ν μ μλ€.
const result = [...new Set(values)];
console.log(result); // [1, 2, 3, 5, 4]
reduce λ©μλ
λ₯Ό νΈμΆν λλ μΈμ λ μ΄κΈ°κ°μ μ λ¬νλ κ²μ΄ μμ νλ€.
reduce λ©μλ
λ‘ κ°μ²΄μ νΉμ νλ‘νΌν° κ°μ ν©μ°νλ κ²½μ°λ₯Ό μκ°ν΄λ³΄μ
const products = [
{id: 1, price: 100 },
{id: 2, price: 200 },
{id: 3, price: 300 }
];
/*
1λ²μ§Έ μν: acc => 0, cur => { id: 1, price: 100 }
2λ²μ§Έ μν: acc => 100, cur => { id: 2, price: 200 }
3λ²μ§Έ μν: acc => 300, cur => { id: 3, price: 300 }
*/
const priceSum = products.reduce((acc, cur) => acc.price + cur.price, 0);
console.log(pirceSum); // 600
μ΄κΈ°κ°μ μ λ¬νμ§ μλ κ²½μ° ν©μ°μ ν μ μμ§λ§ μ΄κΈ°κ°μ μ λ¬ν κ²½μ° ν©μ°μ ν μ μλ€.
some λ©μλ
λ μ½λ°± ν¨μμ λ°νκ°μ΄ λ¨ ν λ²μ΄λΌλ μ°Έμ΄λ©΄true
λͺ¨λ κ±°μ§μ΄λ©΄false
λ₯Ό λ°ννλ€.
some λ©μλ
λ₯Ό νΈμΆν λ°°μ΄μ΄ λΉ λ°°μ΄μΈ κ²½μ° μΈμ λfalse
λ₯Ό λ°ννλ―λ‘ μ£Όμ
some λ©μλ
μ μ½λ°± ν¨μλsome λ©μλ
λ₯Ό νΈμΆν μμκ°κ³Ό μΈλ±μ€,this
λ₯Ό μμ°¨μ μΌλ‘ μ λ¬λ°μ μ μλ€.
// λ°°μ΄μ μμ μ€ 10λ³΄λ€ ν° μμκ° 1κ° μ΄μ μ‘΄μ¬νλμ§ νμΈ
[5, 10, 15].some(item => itme > 10); // true
// λ°°μ΄μ μμ μ€ 0λ³΄λ€ μμ μμκ° 1κ° μ΄μ μ‘΄μ¬νλμ§ νμΈ
[5, 10, 15].some(item => itme < 0); // false
// λ°°μ΄μ μμ μ€ 'banana'κ° 1κ° μ΄μ μ‘΄μ¬νλμ§ νμΈ
['apple', 'banana', 'mango'].some(item => item === 'banana'); // true
// some λ©μλλ₯Ό νΈμΆν λ°°μ΄μ΄ λΉ λ°°μ΄μΈ κ²½μ° μΈμ λ flaseλ₯Ό λ°ννλ€.
[].some(item => item > 3); // false
every λ©μλ
λ μ½λ°± ν¨μμ λ°νκ°μ΄ λͺ¨λ μ°Έμ΄λ©΄true
λ¨ νλ²μ΄λΌλ κ±°μ§μ΄λ©΄false
λ₯Ό λ°ννλ€.
every λ©μλ
λ₯Ό νΈμΆν λ°°μ΄μ΄ λΉ λ°°μ΄μΈ κ²½μ° μΈμ λtrue
λ₯Ό λ°ννλ―λ‘ μ£ΌμνκΈ° λ°λλ€.
every λ©μλ
μ μ½λ°± ν¨μλevery λ©μλ
λ₯Ό νΈμΆν μμκ°κ³Ό μΈλ±μ€,this
λ₯Ό μμ°¨μ μΌλ‘ μ λ¬λ°μ μ μλ€.
// λ°°μ΄μ λͺ¨λ μμκ° 3λ³΄λ€ ν°μ§ νμΈ
[5, 10, 15].every(item => item > 3); // true
// λ°°μ΄μ λͺ¨λ μμκ° 10λ³΄λ€ ν°μ§ νμΈ
[5, 10, 15].every(item => item > 10); // false
// every λ©μλλ₯Ό νΈμΆν λ°°μ΄μ΄ λΉ λ°°μ΄μΈ κ²½μ° μΈμ λ trueλ₯Ό λ°ννλ€.
[].evevry(item => item > 3); // true
ES6μμ λμ λ
find λ©μλ
λ μμ μ νΈμΆν λ°°μ΄μ μμλ₯Ό μννλ©΄μ μΈμλ‘ μ λ¬λ μ½λ°± ν¨μλ₯Ό νΈμΆνμ¬ λ°νκ°μ΄true
μΈ μ²« λ²μ§Έ μμλ₯Ό λ°ννλ€.
μ½λ°± ν¨μμ λ°νκ°μ΄true
μΈ μμκ° μ‘΄μ¬νμ§ μλλ€λ©΄undefined
λ₯Ό λ°ννλ€.
const users = [
{ id: 1, name: 'Lee' },
{ id: 2, name: 'Kim' },
{ id: 2, name: 'Choi' },
{ id: 3, name: 'Park' }
];
// idκ° 2μΈ μ²« λ²μ§Έ μμλ₯Ό λ°ννλ€. find λ©μλλ λ°°μ΄μ΄ μλλΌ μμλ₯Ό λ°ννλ€.
users.find(user => user.id === 2); // -> {id: 2, name: 'Kim'}
// Array#filterλ λ°°μ΄μ λ°ννλ€.
[1, 2, 2, 3].filter(item => item === 2); // -> [2, 2]
// Array#findλ μμλ₯Ό λ°ννλ€.
[1, 2, 2, 3].find(item => item === 2); // -> 2
ES6μμ λμ λ
findIndex λ©μλ
λ μμ μ νΈμΆν λ°°μ΄μ μμλ₯Ό μννλ©΄μ μΈμλ‘ μ λ¬λ μ½λ°± ν¨μλ₯Ό νΈμΆνμ¬ λ°νκ°μ΄true
μΈ μ²« λ²μ§Έ μμμ μΈλ±μ€λ₯Ό λ°ννλ€. μ½λ°± ν¨μμ λ°νκ°μ΄ture
μΈ μμκ° μ‘΄μ¬νμ§ μλλ€λ©΄-1
μ λ°ννλ€.
const users = [
{ id: 1, name: 'Lee' },
{ id: 2, name: 'Kim' },
{ id: 2, name: 'Choi' },
{ id: 3, name: 'Park' }
];
// idκ° 2μΈ μμμ μΈλ±μ€λ₯Ό ꡬνλ€.
users.findIndex(user => user.id === 2); // -> 1
// nameμ΄ 'Park'μΈ μμμ μΈλ±μ€λ₯Ό ꡬνλ€.
users.findIndex(user => user.name === 'Park'); // -> 3
// μμ κ°μ΄ νλ‘νΌν° ν€μ νλ‘νΌν° κ°μΌλ‘ μμμ μΈλ±μ€λ₯Ό ꡬνλ κ²½μ°
// λ€μκ³Ό κ°μ΄ μ½λ°± ν¨μλ₯Ό μΆμνν μ μλ€.
function predicate(key, value) {
// keyμ valueλ₯Ό κΈ°μ΅νλ ν΄λ‘μ λ₯Ό λ°ν
return item => item[key] === value;
}
// idκ° 2μΈ μμμ μΈλ±μ€λ₯Ό ꡬνλ€.
users.findIndex(predicate('id', 2)); // -> 1
// nameμ΄ 'Park'μΈ μμμ μΈλ±μ€λ₯Ό ꡬνλ€.
users.findIndex(predicate('name', 'Park')); // -> 3
ES10μμ λμ λ
flatMap λ©μλ
λmap λ©μλ
λ₯Ό ν΅ν΄ μμ±λ μλ‘μ΄ λ°°μ΄μ ννννλ€. μ¦,map λ©μλ
μflat λ©μλ
λ₯Ό μμ°¨μ μΌλ‘ μ€ννλ ν¨κ³Όκ° μλ€.
const arr = ['hello', 'world'];
// mapκ³Ό flatμ μμ°¨μ μΌλ‘ μ€ν
arr.map(x => x.spilt('')).flat();
// -> ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
// flatMapμ mapμ ν΅ν΄ μμ±λ μλ‘μ΄ λ°°μ΄μ ννννλ€.
arr.flatMap(x => x.split(''));
// -> ['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd']
const arr = ['hello', 'world'];
// flatMapμ 1λ¨κ³λ§ ννννλ€.
arr.flatMap((str, index) => [index, [str, str.length]]);
// -> [[0, ['hello', 5]], [1, ['world', 5]]] => [0, ['hello', 5], 1, ['world', 5]]
// ννν κΉμ΄λ₯Ό μ§μ ν΄μΌ νλ©΄ flatMap λ©μλλ₯Ό μ¬μ©νμ§ λ§κ³ map λ©μλμ flat λ©μλλ₯Ό κ°κ° νΈμΆνλ€.
arr.map((str, index) => [index, [str, str.length]]).flat(2);
// -> [[0, ['hello', 5]], [1, ['world', 5]]] => [0, 'hello', 5, 1, 'world', 5]