JavaScript / λ°°μ΄
π Today I Learned
- λ°°μ΄ μ½νλ¦Ώ
typeof
μ°μ°μλ νΌμ°μ°μμ λ°μ΄ν° νμ
μ μ°μ°μλ‘ λ°ννλ€.
typeof
μ°μ°μλ 7κ°μ§ λ¬Έμμ΄ string, number, boolean, undefined, symbol, object, function
μ€ νλλ₯Ό λ°ννλ€.
console.log(typeof null)
μ μ½λλ₯Ό μ€νμν€λ©΄ null
μ΄ μλλΌ object
κ° μΆλ ₯λλ€.
μ΄λ μλ°μ€ν¬λ¦½νΈ μμ§μ λ²κ·Έλ€. μμ μ νμ΄μΌ νμ§λ§ κ°λ°μ΄ μλ£λ ν μ¬μ΄νΈλ μ½λλ€μ μν₯μ μ€ μ μμ΄ μμ λμ§ μκ³ μλ€.
null
μ νμΈν λλ typeof
κ° μλ μΌμΉ μ°μ°μ(===)
λ₯Ό μ¬μ©ν΄μΌ νλ€.
let result = null;
console.log(typeof null === null);
// false
console.log(result === null);
// true
for...of
λͺ λ Ήλ¬Έμ λ°λ³΅κ°λ₯ν κ°μ²΄(Array, Map (en-US), Set, String, TypedArray, arguments κ°μ²΄ λ±μ ν¬ν¨)μ λν΄μ λ°λ³΅νκ³ κ° κ°λ³ μμ±κ°μ λν΄ μ€νλλ λ¬Έμ΄ μλ μ¬μ©μ μ μ λ°λ³΅ νν¬λ₯Ό νΈμΆνλ 루νλ₯Ό μμ±ν©λλ€.
function getEvenNumbers(arr) {
let result = [];
for (i = 0; i < arr.length; i++) {
if (arr[i] % 2 === 0) {
result.push(arr[i])
}
}
return result;
}
------------------------------------
// μλμ²λΌ νμ©ν μ μλ€.
function getEvenNumbers(arr) {
let result = [];
for (let el of arr) {
if (el % 2 === 0) {
result.push(el);
}
}
return result;
}
concat()
ν¨μλ λ©μλλ μΈμλ‘ μ£Όμ΄μ§ λ°°μ΄μ΄λ κ°λ€μ κΈ°μ‘΄ λ°°μ΄μ ν©μ³μ μ λ°°μ΄μ λ°ννλ€.
const arr1 = ['apple', 'banana', 'carrot'];
const arr2 = ['a', 'b', 'c'];
const arr3 = arr1.concat(arr2);
console.log(arr3);
// ['apple', 'banana', 'carrot', 'a', 'b', 'c']
μ¬κΈ°μ arr3
μ κ°μ²΄ κ°μ concat
μΌλ‘ ν©μΉλ €κ³ νλ©΄ μ΄λ»κ² λλμ§ μμ보μ.
let user = {
name: 'kim',
age: 20,
};
const newarr = arr3.concat(user);
console.log(newarr);
// ['apple', 'banana', 'carrot', 'a', 'b', 'c', {...}]
< μ€λΈμ νΈλ‘ λμ€λ κ²μ νμΈν μ μλ€. >
κ°μ²΄κ° λν΄μ§ newarr
μ λ°°μ΄μ κ°μ§ λ°°μ΄
μ ν©μΉλ©΄ μ΄λ»κ² λ κΉ?
const text = [['celan', 'soap'], ['cute', 'cat']];
const newarr2 = newarr.concat(text)
newarr.concat(text)
// ['apple', 'banana', 'carrot', 'a', 'b', 'c', {β¦}, Array(2), Array(2)]
ES6μμ μ 곡νλ spread operator(...)λ₯Ό μ¬μ©νμ¬ λ°°μ΄μ μ΄μ΄ λΆμΌ μ μλ€.
μ κ° μ°μ°μλΌκ³ λ νλ©° λ°°μ΄κ³Ό κ°μ²΄ λ± μ¬λ¬ κ³³μμ μ¬μ©ν μ μλ€.
λ°°μ΄μμ spread operator
λ λ°°μ΄μ μμλ€μ λΆν΄ν΄μ κ°λ³ μμλ‘ λ§λ€μ΄ μ€λ€.
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
const arr3 = [7, 8, 9];
const addArr = [...arr1, ...arr2, ...arr3];
console.log(addArr.length);
// 9
console.log(addArr);
// [1, 2, 3, 4, 5, 6, 7, 8, 9]
(spread operator)...
μ arr1
μ μμλ€μ μͺΌκ°μ΄ κ°λ³μμμΈ 1, 2, 3
μ 리ν΄.
...arr2
λ κ°λ³μμμΈ 4, 5, 6
μ 리ν΄.
...arr3
μ κ°λ³μμμΈ 7, 8, 9
λ₯Ό 리ν΄.
addArr
λ μ΄λ κ² μͺΌκ°μ§ κ°λ³ μμλ€μ μΈμλ‘ κ°μ§λ μλ‘μ΄ λ°°μ΄μ΄λ€.
const a = [['red', 'blue'], ['pink', 'green']]
const b = [['A', 'B'], ['C', 'D']]
const c = [...a, ...b]
console.log(c.length);
// 4
console.log(c)
// [Array(2), Array(2), Array(2), Array(2)]
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
arr1.push(arr2);
document.write(arr1.length + '<br>'); // 4
document.write(arr1[0] + '<br>'); // 1
document.write(arr1[1] + '<br>'); // 2
document.write(arr1[2] + '<br>'); // 3
document.write(arr1[3] + '<br>'); // [4, 5, 6]
push()
ν¨μλ₯Ό μ¬μ©νμ¬ λ°°μ΄μ ν©μΉλ©΄ νλΌλ―Έν°λ‘ μ λ¬λ λ°°μ΄μ νλμ μμλ‘ μ²λ¦¬νλ€.
μ μμ μμ νλΌλ―Έν°λ‘ μ λ¬λ λ°°μ΄μ arr1
μ 4λ²μ§Έ μμ
κ° λλ€.
λ°λΌμ, arr1
μ κΈΈμ΄λ 6
μ΄ μλλΌ 4
κ° λλ€.
push()
ν¨μλ₯Ό μ¬μ©νμ¬ μ¬λ¬ κ°μ λ°°μ΄μ ν©μΉ λ,
concat()
ν¨μλ₯Ό μ¬μ©ν κ²κ³Ό κ°μ΄ νλΌλ―Έν°λ‘ μ λ¬λ λ°°μ΄μ μμ κ°κ°μ
μλ‘μ΄ λ°°μ΄μ λ£μ΄μ ν©μΉκΈ° μν΄μλ spread operator(...)
λ₯Ό μ¬μ©ν΄μΌ νλ€.
const arr1 = [1, 2, 3];
const arr2 = [4, 5, 6];
arr1.push(...arr2);
document.write(arr1.length + '<br>'); // 6
document.write(arr1[0] + '<br>'); // 1
document.write(arr1[1] + '<br>'); // 2
document.write(arr1[2] + '<br>'); // 3
document.write(arr1[3] + '<br>'); // 4
document.write(arr1[4] + '<br>'); // 5
document.write(arr1[5] + '<br>'); // 6
arr1.push(...arr2)
spread operator(...)
μ λ°°μ΄μ μμλ€μ μͺΌκ°μ΄ κ°κ°μ κ°λ³μμλ₯Ό λ°ννλ€.
νλΌλ―Έν°λ‘ μ λ¬λλ arr2
μ spread operator
λ₯Ό μ¬μ©νμ¬ arr2
μ μμλ€μ κ°κ° μͺΌκ°μλ€.
spread operator
λ₯Ό μ¬μ©ν¨μΌλ‘μ¨, μ΄ ννμμ arr1.push(4, 5, 6)
κ³Ό κ°μ ν¨κ³Όλ₯Ό κ°μ§λ€.
slice()
λ©μλλ μ΄λ€ λ°°μ΄
μ beginλΆν° endκΉμ§(end λ―Έν¬ν¨)μ λν μμ 볡μ¬λ³Έμ μλ‘μ΄ λ°°μ΄ κ°μ²΄λ‘ λ°νν©λλ€. μλ³Έ λ°°μ΄μ λ°λμ§ μμ΅λλ€.
// ꡬ문 μμ±λ²
arr.slice([begin[, end]])
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];
console.log(animals.slice(2)); // 2λ²μ§Έ λ€μλΆν° μΆλ ₯
// expected output: Array ["camel", "duck", "elephant"]
console.log(animals.slice(2, 4)); // 2λ²μ§Έ λ€μλΆν° 4λ²μ§ΈκΉμ§ μΆλ ₯
// expected output: Array ["camel", "duck"]
console.log(animals.slice(1, 5)); // 1λ²μ§Έ λ€μλΆν° 5λ²μ§ΈκΉμ§ μΆλ ₯
// expected output: Array ["bison", "camel", "duck", "elephant"]
console.log(animals.slice(-2)); // -2λ²μ§ΈκΉμ§ μΆλ ₯
// expected output: Array ["duck", "elephant"]
console.log(animals.slice(2, -1)); // 2λ²μ§Έ λ€μ μΆλ ₯, -1λ²μ§Έ λ€μ μΆλ ₯
// expected output: Array ["camel", "duck"]
console.log(animals.slice()); // κ°κ°μ λ¬Έμμ΄λ‘ μΆλ ₯
// expected output: Array ["ant", "bison", "camel", "duck", "elephant"]
slice()
λ©μλλ λ¬Έμμ΄
μ μΌλΆλ₯Ό μΆμΆνλ©΄μ μλ‘μ΄ λ¬Έμμ΄μ λ°νν©λλ€.
// ꡬ문 μμ±λ²
str.slice(beginIndex[, endIndex])
const str = 'The quick brown fox jumps over the lazy dog.';
console.log(str.slice(31)); // 31λ² λ€μλΆν° μΆλ ₯
// expected output: "the lazy dog."
console.log(str.slice(4, 19)); // 4λ² λ€μλΆν° 19λ²κΉμ§
// expected output: "quick brown fox"
console.log(str.slice(-4)); // -4λ²κΉμ§ μΆλ ₯
// expected output: "dog."
console.log(str.slice(-9, -5)); -9λ² λ€μλΆν° 5λ² λ€μκΉμ§
// expected output: "lazy"