Array, Object, Function
π What is TIL?
λ°°μ΄
λμΌν λ°μ΄ν° μ νμ μ¬λ¬ λ³μλ₯Ό μ μ₯νλ λ° μ¬μ©λλ€
λ°°μ΄μ μΈλ±μ€λ₯Ό μ¬μ©νμ¬ μμλ₯Ό μ κ·Όνλ―λ‘ μμλ₯Ό κ²μνλλ° ν¨μ¨μ μ΄λ€
μμμ μμλ₯Ό μ μ§νκ³ μΆκ°νκ±°λ μ κ±°ν λ λ€λ₯Έ μμμ μμΉλ₯Ό λ³κ²½νμ§ μμλ λλ€
π λ°°μ΄μ μμλ κ°μ²΄κ° λ μλ μκ³ , λ λ€λ₯Έ λ°°μ΄μ΄ λ μλ μλ€
π λ°°μ΄μ μμλ₯Ό index, μμλ‘ νΈμΆνλ κ²μ indexing λ°°μ΄μμ κ°μ μμ(elements) λΌκ³ νλ€
λ°°μ΄μμμ νλ‘νΌν° μΆκ°λ?
const arr = [1, 2, 3];
arr.foo = 'bar';
[1, 2, 3, foo: "bar"]
console.log(arr.length) // ?
π‘ arrayμμ νλ‘νΌν°λ₯Ό μΆκ°ν΄μ£Όλ κ²μ μ array.lengthμ ν¬ν¨λμ§ μμκΉ?
π λ°°μ΄μ length νλ‘νΌν°λ λ°°μ΄μ μ μ₯λ κ° μ€ μΈλ±μ€μ κ°μ κ°λ§μ ν¬ν¨νκΈ° λλ¬Έμ΄λ€
λ°°μ΄ μ μ© λ©μλ
λ보기
push
λ°°μ΄μ λ€μμ κ°μ μΆκ°νλ€
pop
λ°°μ΄μ λ€μμ κ°μ κΊΌλ΄κ³ λ°νν μ μλ€
unshift
λ°°μ΄μ μμμ κ°μ μΆκ°νλ€
shift
λ°°μ΄μ μμμ κ°μ κΊΌλ΄κ³ λ°νν μ μλ€
Array.prototype.flat(depth)
λͺ¨λ νμ λ°°μ΄ μμλ₯Ό μ§μ ν κΉμ΄κΉμ§ ννννλ€
Array.prototype.splice(start, deleteCount, items)
λ°°μ΄μ κΈ°μ‘΄ μμλ₯Ό μμ || κ΅μ²΄ || μΆκ°νμ¬ λ°°μ΄μ λ΄μ©μ λ³κ²½νλ€
Array|string.prototype.slice(start, end)
λ°°μ΄μ startλΆν° endμ μ§μ indexκΉμ§ μλ‘μ΄ λ°°μ΄ κ°μ²΄λ‘ λ°ννλ€
Array.prototype.forEach(currentvalue, index, array)
μ£Όμ΄μ§ ν¨μλ₯Ό λ°°μ΄ μμ κ°κ°μ λν΄ μ€ννλ€
Array.prototype.map(currentValue, index, array)
λͺ¨λ μμ κ°κ°μ λνμ¬ μ£Όμ΄μ§ ν¨μλ₯Ό νΈμΆν κ²°κ³Όλ₯Ό λͺ¨μ μλ‘μ΄ λ°°μ΄μ λ°ν
Array.prototype.sort(compareFunction)
λ°°μ΄μ μμλ₯Ό μ λ ¬ν©λλ€
splice
const arr = [10,20,30,40,50]
const x = [1,2,3]
arr.splice(1,0,...x)
arr.splice(6,1,...x)
const arr = [1,2,3,4,5]
// [10, 1, 2, 3, 20, 30, 40, 1, 2, 3, 50]
// -------------
arr.splice() // []
const arr = [1,2,3,4,5]
arr.splice(1) // [2, 3, 4, 5]
const arr = [1,2,3,4,5]
arr.splice(2) // [3, 4, 5]
arr.splice().splice() // error
β οΈ arr.splice().splice() μ κ°μ΄ λ©μλ 체μ΄λμ΄ μλλ μ΄μ λ
βspliceλ arrκ° μλλΌ μμ λ κ°μ λ°ννκΈ° λλ¬Έμ 리ν΄κ°μ΄ λΉ arrayμ΄κΈ° λλ¬Έμ΄λ€
β οΈ μλ λ°°μ΄μ μ§μ μμ νλ©΄ λ©μλ νΈμΆμ΄ μμ λ λ°°μ΄μ λνλ΄λ κ°μ΄ μλ,
βμλ λ°°μ΄μμ μ κ±°λκ±°λ μΆκ°λ μμλ₯Ό λ°ννλ€
β οΈ λ°λΌμ λ©μλ 체μ΄λμ΄ μ΄λ£¨μ΄μ§κΈ° μν΄μ μμ λ λ°°μ΄μ λνλ΄λ κ°μ λ°νν΄μΌνλ€
βμ¦, μλ λ°°μ΄μ μμ νμ§μκ³ μ²΄μΈμ λ€μ λ©μλλ‘ μ λ¬ ν μ μλ μμ λ μ λ°°μ΄μ λ°νν΄μΌ νλ€
flat
0μ°¨μ μ΄μ λ°°μ΄(맀νΈλ¦μ€)μ ννν
λ€μ°¨μμ λ°°μ΄μ TensorλΌκ³ ν μ μλλ°, λ€μ°¨μ λ°°μ΄μ λ€λ£¨λ λΌμ΄λΈλ¬λ¦¬μ΄λ€
μΈκ³΅μ§λ₯μμλ ν μλ₯Ό μ΄μ©ν΄μ λ°μ΄ν°λ₯Ό νννκ³ μ°μ°νλ€ (μμλμ)
const tip = [
[1,2,3],
[4,5,6],
[7,8,9]
]
tip.flat()
tip.flat(1) // νλ² ννν
tip.flat(2) // λλ² ννν
tip.flat(Infinity) // λ€ νΌμ³μ§λ©΄ μ€ν±
π Math.max(β¦tip.flat()) λ‘ ννν ν κ°μ₯ ν° κ°μ ꡬν μλ μλ€
forEach
μλ λ°°μ΄μ μμ νμ§ μλλ€
λ°°μ΄μ κ° μμμ λν΄ μ½λ°±ν¨μλ₯Ό μ€ννλ€
const myArray = [1, 2, 3, 4];
myArray.forEach((element) => {
console.log(element * 2);
return element * 2;
});
console.log("End of script");
βοΈ μ½λ°± ν¨μμ return κ°μ΄ 무μλλ κ²μ μ μ μλ€
βοΈ λ°°μ΄μ μμλ₯Ό λ°λ³΅νκ³ κ° μμμ λν΄ λ³μλ₯Ό μ
λ°μ΄νΈνλ μμ
μ μννκΈ° μν λͺ©μ μΌλ‘ μ°μΈλ€
π‘ κ·ΈλΌ μ½λ°±ν¨μλ??
π νλΌλ―Έν°λ‘ ν¨μλ₯Ό μ λ¬ λ°μ, ν¨μμ λ΄λΆμμ μ€ννλ ν¨μλ₯Ό λ§νλ€
map
μλ λ°°μ΄μ κ° μμμ μ½λ°± ν¨μλ₯Ό μ μ©ν κ²°κ³Όλ₯Ό ν¬ν¨νλ μ λ°°μ΄μ λ°ννλ€
λ³νλ κ°μ ν¬ν¨νλ μ λ°°μ΄μ λ§λ€κΈ° μν΄ μ°μΈλ€
sort
μ λ ¬
JavaScript sort() λ©μλλ μμκ° μ«μ κ°μΈ κ²½μ°μλ λ¬Έμμ΄λ‘ μ λ ¬νλ€
μ΄λ‘ μΈν΄ λ μλ¦Ώμκ°κ° λμ΄κ°λ μμ λΆν° β10βμ΄ β2βλ³΄λ€ λ¨Όμ μ λ ¬λλ λ¬Έμ κ° μλ€
λ°λΌμ μ«μ κ°μΌλ‘ λΉκ΅νκΈ° μν΄μ sort() λ©μλμ μμ λ΄μ μ¨μΌνλ€
// μ€λ¦μ°¨μ
const nums2 = [3,1,11,8,6]
console.log(nums2.sort((a,b)=>a-b));
// λ΄λ¦Όμ°¨μ
const nums2 = [3,1,11,8,6]
console.log(nums2.sort((a,b)=>b-a));
// μ€λ¬΄μ¬μ©μ½λ
function sort(key){
if (click){
click = false
var sortedData = jsonData.sort((a, b) => (a[key] < b[key] ? -1 : (a[key] > b[key] ? 1 : 0)))
}
else{
click = true
var sortedData = jsonData.sort((a, b) => (a[key] > b[key] ? -1 : (a[key] < b[key] ? 1 : 0)))
}
}
κ°μ²΄
key μ value λ₯Ό μ μ₯νλλ° μ¬μ©λκ³ μμ± μ΄λ¦μ μ¬μ©νμ¬ μμ±μ μ κ·Όνλ―λ‘ μμ±μ κ²μνλλ° ν¨μ¨μ μ΄λ€
κ°μ²΄λ μμκ° μμΌλ―λ‘ μμμ μμλ₯Ό μ μ§ν νμκ° μλ€
const aespa = {
members: ['카리λ', 'μν°', 'μ§μ €', 'λλ'],
from: 'κ΄μΌ',
sing: function(){
return "hello world"
}
};
console.log(aespa.hasOwnProperty('itzy')); // false
console.log(aespa.hasOwnProperty('sing')); // true
// aespa.keys()
console.log(Object.keys(aespa))
console.log(Object.keys(aespa))
μ μ¬λ°°μ΄ κ°μ²΄μ λ°°μ΄
const arr = {
0: 10,
1: 20,
length: 3
};
μ μ¬λ°°μ΄μ λ°°μ΄κ³Ό λΉμ·ν ννλ₯Ό κ°μ§ κ°μ²΄λ‘ λ°°μ΄μ ꡬ쑰μ λμμμ λΉμ·νμ μ΄ μλ€
νμ§λ§ λ°°μ΄μ λΉν΄ ν¨μ¨μ μ΄μ§ μμμ μ€λ¬΄μμλ μ¬μ©λμ§ μλλ€
π λ°°μ΄μ κ°μ indexλ₯Ό μ¬μ©ν΄μ λ°°μ΄μ μμΉλ‘ μ½κ³ λΉ λ₯΄κ² μ κ·Όν μ μλ λ°©μμΌλ‘ μ μ₯λλ€
π μ μ¬ λ°°μ΄ κ°μ²΄λ λ°°μ΄ μ²λΌ 보μ΄λλ‘ κ΅¬μ‘°νλ JavaScript κ°μ²΄μ΄λ€
π λ°°μ΄μλ μ μ¬ λ°°μ΄ κ°μ²΄κ° μ¬μ©ν μ μλ λ΄μ₯ λ©μλκ° μ‘΄μ¬νλ€
π μ΄λ¬ν μ μ₯ λ°©μμ°¨μ΄μ λ΄μ₯ λ©μλμ μ λ¬΄λ‘ μΈν΄ λ°°μ΄μ μ κ·Ό λ° λ°λ³΅μ λν΄ λ ν¨μ¨μ μ΄λ€
λ©μλλ?
κ°μ²΄μ νλ‘νΌν°λ μ΄λ¦κ³Ό κ°μΌλ‘ ꡬμ±λ λ³μλ€μ μ§ν©μ΄λ€ νλ‘νΌν°μ κ°μΌλ‘ ν¨μκ° μ¬ μλ μλλ° μ΄λ¬ν νλ‘νΌν°λ₯Ό λ©μλλΌκ³ νλ€
π μ¦, λ©μλλ κ°μ²΄κ° κ°μ§κ³ μλ μ΄λ€ λμμ λ§νλ€
π νλ‘νΌν°μ λ©μλμ μ°¨μ΄μ μ κ°μΌλ‘ ν¨μκ° μ¬ μ μλμ§μ μ¬λΆμ΄λ€
π μ½κ² μκ°ν΄μ .
μ μ°μ΄ μ κ·Ό ν μ μλ ν¨μλ λ©μλμ΄λ€
ν¨μ
νΉμ ν μμ μ μννκΈ° μν΄ νΈμΆν μ μλ μ½λλΈλ‘μ λ§νλ€
const three = function(a, b, c) { // 1
let z = c(a,b) + c(a,b)
return z ** 2 // 3
}
four(10, 20, one)
π μ¬μ¬μ©μ±μ΄ λμνλ€
π μ μ§λ³΄μκ° μ©μ΄νλ€
π ꡬ쑰 νμ
μ΄ μ©μ΄νλ€
function four(a, b, c) {
let z = one(a,b) + one(a,b)
return z * 2
}
four(7, 3, one)
β οΈ μμ κ²½μ° ν¨μμ μμμ±, μμν¨μμ μ₯μ μ μ΄λ¦΄ μ μλ€
const three = function(a, b, c) { // 1
let z = c(a,b) + c(a,b)
return z ** 2 // 3
}
four(7, 3, one)
βοΈ μ μ κ²½μ°μ²λΌ μΈλΆμμ μ§μ κ°μ κ°μ Έμ€λ κ²μ μ§μνμ
RORO κΈ°λ²
Receive an Object, Return an Object
function runPython(user, time, code, lv){
}
runPython({
user: 'dongsup',
time: 100,
code: 'function...',
lv: 3
})
π λ» κ·Έλλ‘ κ°μ²΄λ‘ λ°κ³ κ°μ²΄λ‘ λ°ννλ κ²μ΄λ€
π μλ³ μ΄μκ° μμ κ²½μ° μ°λ μ½λμ κ°λ
μ±κ³Ό μ μ§λ³΄μμ±μ΄ μ’μμ§λ€
μ¦μ μ€ν ν¨μ
(function() {
console.log('μ΄ ν¨μλ λ§λ€μ΄μ§μλ§μ λ°λ‘ μ€νλ©λλ€!');
})();
π ν¨μλ₯Ό κ΄νΈλ‘ κ°μΈλ©΄ ν¨μκ° λ§λ€μ΄μ§λ§μ μ€νλλ€
Mutableκ³Ό Immutable
Mutableμ λ³κ²½ κ°λ₯ν κ° κ°μ²΄, λ°°μ΄, ν¨μ, ν΄λμ€ λ±μ λ§νλ€
Immutableμ λ³κ²½λμ§ μλ μμνμ μ λ§νλ€
π TIP
μμλ λ§ν μ€λ¬΄ ν
let tip = [1,2,3,4,5]
console.log([...tip].pop())
π μλ³Έ μμ (μμ) μμ΄ [1,2,3,4] κ°κ³Ό [5]λΌλ κ°μ μ»μ΄λ΄κ³ μΆμ λ
let tip = [1,2,3,4,5]
console.log(...tip, 1000, ...tip)
// [1,2,3,4,5, 1000, 10,20,30,40,50]
console.log([tip.slice(0,2), 1000, tip.slice(2, 5)])
console.log([...tip.slice(0,2), 1000, ...tip.slice(2, 5)])
tip.splice(2, 0, 1000)
const tip = Array.from('hello world') // newμμ΄λ μλ
const tip = new Array(10).fill(0) // newμμ΄λ μλ
const tip = Array(100).fill(0).map((v,i) => i+1)
'.'.repeat(100).split('.') // κΆνμ§ μμ
const human = {
name: "dongsup",
age: 53,
from: "korea",
askingHim: function () {
console.log("hello world!");
},
0: '01050442903'
};
human.name = 'jun'
human.askingHim()
delete human.job;
console.log('age' in human)
// console.log(20 in [10,20,30,40]) error
// inμ°μ°μκ° ν€λ₯Ό μνν΄μ error
function ν¨μ1(a,b,c) {
return a + b + c
}
ν¨μ1(10,20,30,40) //errorκ° λ°μνμ§ μλλ€
ν¨μ1(10,20) // errorκ° λ°μνμ§ μλλ€ λ€λ₯ΈμΈμ΄μ κ²½μ° error
function ν¨μ1(a=10, b=20, c=30){
return a + b + c
}
ν¨μ1(1, 1)
function ν¨μ1(a=10, b=20, c=30){
return a + b + c
}
// aμ cμ λ€μ΄κ° κ²μ΄λΌκ³ μκ°νμ§λ§ aμ bμ λ€μ΄κ°λ€
ν¨μ1(a=1, c=1)
function hello(para) {
console.log(para)
console.log('hello')
return 100
}
console.log(hello(10)) // 10 hello 100
let x = console.log('hello')
// console.log('hello') μ리μ return κ°μ΄ λ€μ΄κ°κΈ° λλ¬Έμ undefined
x // undefined
π returnκ³Ό console.logλ₯Ό νΌλνμ§μκ³ μ¬μ©νμ
λκΈλ¨κΈ°κΈ°