# 1~2μΌμ°¨ 볡μ΅
- μλ°μ€ν¬λ¦½νΈμμ λͺ¨λ ν¨μμ νλΌλ―Έν°λ κ°μΌλ‘ μ λ¬λλ©°(call by value) λ νΌλ°μ€ μ μ© νλΌλ―Έν°λ μλ€. νμ§λ§ λ°°μ΄μ²λΌ κ°μ²΄ λ νΌλ°μ€λ₯Ό ν¨μ νλΌλ―Έν°λ‘ μ¬μ©ν λλ λ νΌλ°μ€λ‘ μ λ¬λλ€.
- JSλΒ κΈ°λ³Έ νμ (number, string, boolean, null, undefined)μ μ μΈν λͺ¨λ κ°μ΄ 'κ°μ²΄'μ΄λ€. λ°λΌμ λ°°μ΄, ν¨μ, μ κ·ννμ λ± λͺ¨λ κ°μ²΄λ‘ ννλλ€. μ΄κ²μ κ°μ²΄μ λͺ¨λ μ°μ°μ΄ μ€μ κ°μ΄ μλ μ°Έμ‘°κ°μΌλ‘ μ²λ¦¬λκΈ° λλ¬Έμ΄λ€.
- κΈ°λ³Έ νμ κ³Ό μ°Έμ‘° νμ μ κ²½μ°λ ν¨μ νΈμΆ λ°©μλ λ€λ₯΄λ€. κΈ°λ³Έ νμ μ call by valueλ‘ λμνλ€. ν¨μμ μΈμλ‘ κΈ°λ³Έ νμ μ΄ λκ²¨μ§ κ²½μ°, ν¨μμ 맀κ°λ³μλ‘ λ³΅μ¬λ κ°μ΄ μ λ¬λλ€. λ°λΌμ ν¨μ λ΄λΆμμ 맀κ°λ³μλ₯Ό μ΄μ©ν΄ κ°μ λ³κ²½ν΄λ, μ€μ λ‘ νΈμΆλ λ³μμ κ°μ΄ λ³κ²½λμ§λ μλλ€.
λ°λ©΄, κ°μ²΄μ κ°μ μ°Έμ‘° νμ
μ κ²½μ°, ν¨μλ₯Ό νΈμΆν λ call by reference(νλ¦Ό!)λ‘ λμνλ€. μ¦, ν¨μλ₯Ό νΈμΆν λ, κ°μ²΄μ μ°Έμ‘°κ°μ΄ μ λ¬λκ³ ν¨μ λ΄λΆμμ μ°Έμ‘°κ°μ μ΄μ©ν΄ μΈμλ‘ λκΈ΄ μ€μ κ°μ²΄μ κ°μ λ³κ²½ν μ μλ€.
- >Β JSμμ call by referenceκ° νλ¦° μ΄μ ?
JSλ νμ call by valueλ€. μλνλ©΄ cbrμ΄ λΆμμ νκΈ° λλ¬Έμ΄λ€.
function foo(obj2) {
obj2= 10;
console.log(obj2);// 10
}
let obj1 = { a: 5, b: 8 };
foo(obj1);
console.log(obj1);// C, C++μμλ 10 / JSλ { a: 5, b: 8 } μΆλ ₯!!
cλ c++ κ°μ μΈμ΄μμ ν¬μΈν°λ₯Ό μλ‘ λ€λ©΄, ν¨μ λ΄μμ obj2 = 10;μ νλ κ²½μ° obj1μ κ°μ΄ 10μ΄ λλ€. μμ ν μ£Όμκ° μ°Έμ‘°λ‘ λμ΄ μκΈ° λλ¬Έμ΄λ€.
νμ§λ§Β JSμ κ²½μ°μλ κ°μ²΄μ νλ‘νΌν° κ°μ΄ μλΒ κ°μ²΄ μ체μ λ³κ²½μ νμ©νμ§ μλλ€.Β μλνλ©΄ κ²λ³΄κΈ°μλ μ£Όμκ°μ μ°Έμ‘°νλ κ² κ°μ§λ§ μ€μ λ‘λ μ£Όμκ°μ 볡μ¬λ³Έμ λ§λ€μ΄μ λκΈ°κΈ° λλ¬Έμ΄λ€.
https://velog.io/@leo-xee/JS-Call-by-value-reference
μ΄μ²λΌΒ ν¨μ λ΄λΆμΒ obj2 = 10;μμΒ obj2μ μ£Όμκ°μ΄Β 10μ΄ μ μ₯λ μμΉμ μ£Όμκ°μΌλ‘ λ³κ²½λλ€.Β κ²°λ‘ μ μΌλ‘ λ κ°μ²΄λ λ€λ₯Έ κ°μ²΄μ΄λ€. λλ¬Έμ JSλΒ call by sharingμ΄λΌλ μ©μ΄λ₯Ό μ¬μ©νκΈ°λ νλ€.
- var ν€μλλ₯Ό μ¬μ©νμ§ μκ³ λ³μλ₯Ό μ μΈνλ©΄ ν¨μ λ΄μ μ μΈνλλΌλ κ·Έ λ³μλ μλμΌλ‘ μ μ λ²μλ₯Ό κ°λλ€. ν¨μμμ μ μΈν λ³μκ° λ©μΈ νλ‘κ·Έλ¨μ μλ μ μ λ³μμ κ°μ λ³κ²½νκ² λλ€.(var : function scope / const, let : block scope)
- JSμμλ λ³μ λ²μκ° ν¨μ λ²μκ³ λΈλ‘ λ²μκ° μ§μλμ§ μλλ€κ³ νμΌλ ES6(ES2015)μμ let, constκ° μ§μλλ©΄μ κ°λ₯ν΄μ‘λ€.
"letμ λ³μκ° μ μΈλ λΈλ‘, ꡬ문 λλ ννμ λ΄μμλ§ μ ν¨ν λ³μλ₯Ό μ μΈνλ€. μ΄λ var ν€μλκ° λΈλ‘ λ²μλ₯Ό 무μνκ³ μ μ λ³μλ ν¨μ μ§μλ³μλ‘ μ μΈλλ κ²κ³Ό λ€λ₯΄λ€."
- letμ varκ³Ό λ¬λ¦¬ λ³μμ μ¬ν λΉμ νμ©νμ§ μμ μ¬ν λΉ λ¬Έμ λ₯Ό ν΄κ²°ν΄μ€λ€.
- κ·Έ λ°μ varμ νΈμ΄μ€ν μ΄ μ§μλλλ° λ³μκ° ν¨μ λ΄μμ μ μλλ©΄ κ·Έ ν¨μμ μ΅μμλ‘, ν¨μ λ°κΉ₯μ μ μλ κ²½μ° μ μ 컨ν μ€νΈμ μ΅μμλ‘ λ³κ²½λλ κ²μ΄λ€.
μ½λμ μμμ μκ΄ μμ΄ λ³μμ ν¨μ μ μΈλ¬Έμ λν λ©λͺ¨λ¦¬λ₯Ό λ¨Όμ ν보νλ κ²μ΄λ€. νμ§λ§ κ°μ΄ ν λΉλμ§λ μμΌλ―λ‘ undefinedλ₯Ό μΆλ ₯νλ€.
- κ°μ²΄λ μμ±μ ν¨μλ₯Ό μ΄μ©ν΄ μ μνλ€. this ν€μλλ κ° ν¨μμ νλ‘νΌν°λ₯Ό κ°μ²΄ μΈμ€ν΄μ€λ‘ μ°κ²°νλ μν μ΄λ€. μ΄λ€ κ°μ²΄μ balance νλ‘νΌν°λ₯Ό μ°Έμ‘°νλ κ²μΈμ§ μ μ μλλ‘ this ν€μλλ₯Ό μ¬μ©νλ€.
function Checking(amount){
this.balance = amount;// νλ‘νΌν°this.deposit = deposit;// ν¨μ// ...
}
function deposit(amount){
this.balance += amount;
}
// ...let account = new Checking(500);
account.deposit(1000);
// ...
- λ°°μ΄μ μ μ μΈλ±μ€(μ€νμ )μ μ΄μ©ν΄ κ° μμμ μ κ·Όν μ μκ² μμ°¨μ μΌλ‘ μμλ₯Ό μ μ₯ν μ§ν©μ²΄λ€. JSμ λ°°μ΄μ νΉνλ JS κ°μ²΄μ΄λ©° μ μ μΈλ±μ€(κ°μ²΄μ νλ‘νΌν°λͺ μν )λ‘ κ°μ²΄ λ΄ λ°μ΄ν° μ€νμ μ νννλ€. μ μλ₯Ό μΈλ±μ€λ‘ μ¬μ©νλ©΄ λ΄λΆμ μΌλ‘ μ μλ₯Ό λ¬Έμμ΄λ‘ λ³ννλ€. λ΄λΆμ μΌλ‘λ νΉνλ κ°μ²΄μ΄λ―λ‘ λ°°μ΄λ‘ μ·¨κΈνλ κ²μ΄λ€.
- ν λ°°μ΄μ λ€μν μ’ λ₯μ μμλ₯Ό ν¬ν¨ν μ μλ€.(λλΆλΆ μ€ν¬λ¦½νΈ μΈμ΄κ° κ·Έλ λ€.)
- Array.isArray()λ‘ νΉμ κ°μ²΄κ° λ°°μ΄μΈμ§ μ¬λΆλ₯Ό νμΈν μ μλ€.
- JS λ°°μ΄μ κ°μ²΄μ΄λ―λ‘ μΈμ λ μ§ ν¬κΈ°κ° λμ΄λ μ μλ€. length νλ‘νΌν°λ₯Ό μ¬μ©νλ©΄ νμ¬ λ°°μ΄μ μ€μ μμ μκ° μ νν λ°νλλ―λ‘ μΈμ λ λ°°μ΄μ λͺ¨λ μμμ μ κ·Όν μ μλ€.
- split() ν¨μλ λ¬Έμμ΄μ νΉμ ꡬλΆμ(곡백 λ±)λ‘ λΆλ¦¬νλ€μ λΆλ¦¬λ λ¬Έμμ΄μ ν¬ν¨νλ λ°°μ΄μ λ°ννλ€.
- λ°°μ΄μ λ€λ₯Έ λ°°μ΄μ ν λΉν μ μλ€. μ΄λΒ ν λΉλ λ°°μ΄μ λ νΌλ°μ€λ₯Ό ν λΉνλ κ²μ΄λ€. λ°λΌμ μλ λ°°μ΄μ λ°κΎΈκ² λλ©΄ ν λΉλ λ°°μ΄λ λ°λλ€. μ΄λ₯Ό μμ 볡μ¬(shallow copy)λΌκ³ νλ€.
- κΉμ 볡μ¬(deep copy)λΒ μλ λ°°μ΄ μμλ₯Ό μλ‘μ΄ λ°°μ΄ μμλ‘ λ³΅μ¬νλ κΈ°λ₯μ΄ νμν λΒ μ΄λ€.
- μ κ·Όμ ν¨μ(accessor function)μ νΉμ κ°μ ν¬ν¨νλ κ²°κ³Ό λ°°μ΄μ λ°ννλ€.
- κ·Έ μ€ μμ£Ό μ°μ΄λ κ²μ΄ indexOf()λ‘ μΈμλ‘ μ 곡λ κ°μ΄ λ°°μ΄μ μμΌλ©΄ μΈλ±μ€ μμΉλ₯Ό λ°ννκ³ μμΌλ©΄ -1μ λ°ννλ€. μ¬λ¬ κ°λ©΄ 첫 λ²μ§Έλ‘ λ°κ²¬ν μΈμμ μΈλ±μ€λ₯Ό λ°ννλ€.
- join(), toString() ν¨μλ λ°°μ΄μ λ¬Έμμ΄ νμμΌλ‘ λ°κΎΌλ€. λ ν¨μ λͺ¨λΒ λ°°μ΄μ μμλ₯Ό μ½€λ§(,)λ‘ κ΅¬λΆνλ λ¬Έμμ΄μ λ°ννλ€.
- print()λ console.log()μ μΈμλ‘ λ°°μ΄μ μ΄λ¦μ μ 곡νλ©΄ μλμΌλ‘ λ°°μ΄μ toString()μ΄ νΈμΆλλ€.
- concat(), splice()λ κΈ°μ‘΄ λ°°μ΄μ μ΄μ©ν΄ μ λ°°μ΄μ λ§λ λ€. concat()μ λ κ° μ΄μμ λ°°μ΄μ ν©μ³μ μ λ°°μ΄μ λ§λ€κ³ , splice()λ κΈ°μ‘΄ λ°°μ΄μ μλΈμ μΌλ‘ μ λ°°μ΄μ λ§λ λ€.
// concat()let itDiv = cisDept.concat(dmpDept);
console.log(itDiv);
μΈμλ‘ μ 곡λ λ°°μ΄μ΄ μλ λ°°μ΄μ λ€λ‘ μΆκ°λλ€.
splice()λ μ¬μ©ν 첫 μμμ μμΉ, κΈ°μ‘΄ λ°°μ΄μμ μ¬μ©ν μμμ μλ₯Ό μΈμλ‘ λ°λλ€.
// splice()let itDiv = ["D", "C", "R", "L", "J", "R", "C", "B"];
let dmpDept = itDiv.splice(3,3);
let cisDept = itDiv;
console.log(dmpDept);// ["L", "J", "R"]console.log(cisDept);// ["D", "C", "R", "C", "B"]
μ¬μ©ν  첫 μμμ μμΉλ 3μ΄λ―λ‘ itDiv[3] = L λΆν° μ¬μ©ν μμμ μ 3λ§νΌ μλΌμ 3κ°μ μμλ₯Ό κ°μ§ λ°°μ΄μ΄ λ§λ€μ΄μ‘λ€. ν΄λΉ μμλ€μ μ μΈν λ°°μ΄μ itDivμ λ¨μμμμ λ³Ό μ μλ€.
λ°λΌμ spliceλΒ μνλ μμλ₯Ό μ κ±°νλ μ©λλ‘ μ¬μ©ν μ μλ€.
CH2 λ°°μ΄
2.4 λ³νμ ν¨μ
κ°λ³μ μΌλ‘ μμλ₯Ό 건λλ¦¬μ§ μκ³ λ°°μ΄ μ 체 λ΄μ©μ κ³ μΉλ μ¬λ¬ λ³νμ ν¨μ(mutator function)
2.4.1 λ°°μ΄μ μμ μΆκ°νκΈ°
push(), unshift() ν¨μλ κ°κ° λ°°μ΄μ μμλ₯Ό μΆκ°νκ³ , λ°°μ΄μ μμλ₯Ό μ κ±°νλ ν¨μλ€. push()λ λ°°μ΄μ λμ μμλ₯Ό μΆκ°νλ€. lengthλ₯Ό μ΄μ©ν΄ λ°°μ΄μ νμ₯νλ κ²λ³΄λ€ μ§κ΄μ μ΄λ€.
λ°°μ΄μ μ²μμ μμλ₯Ό μΆκ°ν λ λ³νμ ν¨μκ° μλ€λ©΄ λ°°μ΄μ μλ κΈ°μ‘΄ λͺ¨λ μμλ₯Ό ν μΉΈμ© λ€λ‘ μ΄λμν¨ λ€μ μ λ°μ΄ν°λ₯Ό μΆκ°ν΄μΌ νλ€.
// λ°°μ΄μ μ²μμ μμλ₯Ό μΆκ°νκΈ°let nums = [2, 3, 4, 5];
let newnum = 1;
let N = nums.length;
for (let i = N; i >= 0; --i) {
nums[i] = nums[i - 1];// lengthλ‘ μΈλ±μ€λ₯Ό μ§μ νλ©΄ ν μΉΈμ© λ€λ‘
}
nums[0] = newnum;
console.log(nums);// 1,2,3,4,5
λ°°μ΄μ μμκ° λ§μμλ‘ μ½λμ ν¨μ¨μ±μ΄ λ¨μ΄μ§λ€.
unshift()λ μ΄ κ³ λ―Όμ ν΄κ²°ν΄μ€λ€.
// unshift()let nums = [2, 3, 4, 5];
console.log(nums);// 2,3,4,5let newnum = 1;
nums.unshift(newnum);
console.log(nums);// 1,2,3,4,5
nums = [3, 4, 5];
nums.unshift(newnum, 2);
console.log(nums);// 1,2,3,4,5
ν λ²μ μ¬λ¬ μμλ₯Ό λ°°μ΄ μμΌλ‘ μΆκ°ν μλ μλ€.
210501 ν μμΌ 4μΌμ°¨
CH2 λ°°μ΄
2.4 λ³νμ ν¨μ
2.4.2 λ°°μ΄μ μμ μμ νκΈ°
pop()Β λ³νμ ν¨μλ₯Ό μ΄μ©νλ©΄ κ°λ¨νκ² λ°°μ΄μ λ§μ§λ§ μμλ₯Ό μ κ±°ν μ μλ€.
let nums = [1,2,3,4,5,9];
nums.pop();
console.log(nums);// 1,2,3,4,5
λ°°μ΄μ μ μμλ₯Ό μ κ±°ν λ λ³νμ ν¨μκ° μλ€λ©΄ μμλ₯Ό μΆκ°ν λμ λ§μ°¬κ°μ§λ‘ λΉν¨μ¨μ μ΄λ€.
let nums = [9,1,2,3,4,5];
console.log(nums);
for ( let i = 0; i < nums.length; ++i){
nums[i] = nums[i+1];
}
console.log(nums);// 1,2,3,4,5,
λΉν¨μ¨μ μΈ λμ νμ 맨 λμ λΆνμν κ°μ΄ μ μ₯λλ€. λ§μ§λ§ μ½€λ§κ° μΆλ ₯λ κ²μΌλ‘ μ μ μλ€.
shift() ν¨μλ₯Ό μ΄μ©νλ©΄ κ°λ¨ν λ°°μ΄μ 맨 μ²μ μμλ₯Ό μ κ±°ν μ μλ€.
let nums = [9,1,2,3,4,5];
nums.shift();
console.log(nums);// 1,2,3,4,5
μ΄λ²μλ λ°°μ΄ λμ λΆνμν μμκ° μμ΄μ‘λ€.
pop()κ³Ό shift()λ μ κ±°λ μμλ₯Ό λ°ννλ―λ‘ νμνλ©΄ μ΄ μμλ₯Ό λ³μμ μ μ₯ν μ μλ€.
// pop,shiftλ μ κ±°λ μμλ₯Ό λ°ννμ¬ μμλ₯Ό λ³μμ μ μ₯ν μ μλ€.let nums = [6, 1, 2, 3, 4, 5];
let first = nums.shift();// 6 μ μ₯
nums.push(first);
console.log(nums);// 1,2,3,4,5,6
2.4.3 λ°°μ΄ μ€κ°μ μμλ₯Ό μΆκ°νκ±°λ λ°°μ΄μ μ€κ°μ μλ μμ μμ νκΈ°
μ€κ°μ μΆκ°νκ±°λ μμ ν λλ λ€λ₯Έ μμλ₯Ό μ΄λμμΌμΌ νλ λ¬Έμ κ° μκΈ΄λ€. splice()λ₯Ό μ΄μ©νλ©΄ νλ²μ λ κ°μ§ λμμ μνν μ μλ€.
λ°°μ΄μ μμλ₯Ό μΆκ°νλ €λ©΄ μΈ κ°μ§ μΈμκ° νμνλ€.
- μμ μΈλ±μ€(μ΄λ μ§μ λΆν° μμλ₯Ό μΆκ°ν κ²μΈμ§)
- μμ ν μμμ κ°μ(μμλ₯Ό μΆκ°ν λλ O)
- λ°°μ΄μ μΆκ°ν μμλ€
let nums = [1, 2, 3, 7, 8, 9];
let newElements = [4, 5, 6];
nums.splice(3, 0, ...newElements);
console.log(nums);// 1,2,3,4,5,6,7,8,9
μμΒ μΈλ±μ€Β 3(nums[3]),Β 0μ΄λ―λ‘Β μμΒ μΆκ°,Β κ·ΈΒ λ€μλΆν°λΒ μΆκ°νλ €λΒ μμΒ λͺ©λ‘μΒ μμ λ‘κ²Β μ 곡νλ©΄Β λλ€.
// splice() : μ€κ°μ μμ let nums = [1, 2, 3, 100, 200, 300, 400, 4, 5];
nums.splice(3, 4);
console.log(nums);// 1,2,3,4,5
μμΒ μΈλ±μ€Β 3(nums[3])λΆν°Β μμΒ 4κ°λ₯ΌΒ μμ νλ€.
2.4.4 λ°°μ΄ μμ μ λ ¬νκΈ°
reverse()λ λ°°μ΄μ μμλ₯Ό μμμΌλ‘ λ°κΎΌλ€.
let nums = [1, 2, 3, 4, 5];
nums.reverse();
console.log(nums);// 5,4,3,2,1
sort() ν¨μκ° λ°°μ΄ μμλ₯Ό μμλλ‘ μ λ ¬νλ©° νΉν λ¬Έμμ΄μ μ λ ¬ν λ μ μ©νλ€.
// sort() : μμλλ‘ μ λ ¬let names = ["D", "M", "C", "Cl", "B", "R"];
nums.sort();
console.log(names);// B, Cl, C, D, M, R
μ«μλ μκ°λλ‘ λμ§ μλλ€.
sort()λ λ°°μ΄ μμλ₯Ό λ¬Έμμ΄λ‘ κ°μ£Όνκ³ μνλ²³ μμΌλ‘ μμλ₯Ό μ λ ¬νλ€. sort()μ μμλ₯Ό κ²°μ ν΄μ£Όλ ν¨μλ₯Ό μΈμλ‘ μ λ¬νλ©΄ μ΄λ₯Ό ν΅ν΄ μ«μλ₯Ό μ¬λ°λ₯΄κ² μ λ ¬ν μ μλ€.
λ¨μνκ² ν μ«μμμ λ€λ₯Έ μ«μλ₯Ό λΉΌλ λ°©μμΌλ‘ μ«μμ μμλ₯Ό κ²°μ νλ ν¨μλ₯Ό ꡬνν μ μλ€. λΊμ
κ²°κ³Όκ° μμλ©΄ μΌμͺ½μ΄ μλ€λ κ²μ΄κ³ 0μ΄λ©΄ κ°λ€λ κ²μ΄λ©°, κ²°κ³Όκ° μμλ©΄ μΌμͺ½μ΄ μ€λ₯Έμͺ½λ³΄λ€ ν¬λ€λ κ²μ΄λ€.
// sort() μ«μ μ λ ¬ ν¨μfunction compare(num1, num2) {
return num1 - num2;
}
let nums = [3, 1, 2, 100, 4, 200];
nums.sort(compare);
console.log(nums);// 1,2,3,4,100,200
2.5 λ°λ³΅μ ν¨μ
λ°λ³΅μ ν¨μλΒ λ°°μ΄μ κ° μμμ ν¨μλ₯Ό μ μ©ν λ€μ κ·Έ κ²°κ³ΌΒ κ° λλ κ°μ μ§ν© λλ μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
2.5.1 λ°°μ΄μ λ§λ€μ§ μλ λ°λ³΅μ ν¨μ
λ°°μ΄μ λ§λ€μ§ μλΒ λ°λ³΅μ ν¨μλ‘Β forEach()Β ν¨μκ° μλ€.Β λ°°μ΄μ λͺ¨λ μμμ μΈμλ‘ λ°μ ν¨μλ₯Ό νΈμΆνλ€.
function square(num) {
console.log(num, num * num);
}
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
nums.forEach(square);
every()λΒ λΆλ¦° ν¨μλ₯Ό λ°°μ΄μ μ μ©ν΄ λ°°μ΄μ λͺ¨λ μμκ° μ°Έμ΄λ©΄ trueλ₯Ό λ°ννλ€.
// every() : λΆλ¦° ν¨μλ₯Ό λ°°μ΄μ μ μ©, λͺ¨λ μμκ° μ°Έμ΄λ©΄ true λ°ν.function isEven(num) {
return num % 2 == 0;
}
let nums = [2, 4, 6, 8, 10];
let even = nums.every(isEven);
if (even) {
console.log("all numbers are even");
} else {
console.log("not all numbers are even");
}
some()Β ν¨μλ λ°°μ΄ μμ μ€μΒ ν μμλΌλ μΈμλ‘ λ°μ λΆλ¦° μμμ κΈ°μ€μ λ§μ‘±νλ©΄ trueλ₯Ό λ°ννλ€.
// some() : λΆλ¦° ν¨μλ₯Ό λ°°μ΄μ μ μ©, νλλΌλ μμκ° μ°Έμ΄λ©΄ true λ°ν.function isEven(num) {
return num % 2 == 0;
}
let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let someEven = nums.some(isEven);
if (someEven) {
console.log("some numbers are even");
} else {
console.log("not all numbers are even");
}
nums = [1, 3, 5, 7, 9];
someEven = nums.some(isEven);
if (someEven) {
console.log("some numbers are even");
} else {
console.log("no numbers are even");
}
reduce()Β ν¨μλ λμ μ ν¨μλ₯Ό μΈμλ‘ λ°μ λ€μΒ λ°°μ΄μ λͺ¨λ μμλ₯Ό λμ μ ν¨μμ μ μ©νλ€. reduce()λ add()λ₯Ό μ΄μ©ν΄ μΌμͺ½μμ μ€λ₯Έμͺ½μΌλ‘ λ°°μ΄μ ν©μ κ³μ°νλ€.
add(1,2) => 3
add(3,3) => 6
add(6,4) => 10
,,,
reduce() ν¨μλ₯Ό μ΄μ©ν΄ λ¬Έμμ΄μ μ°κ²°ν μλ μλ€.
// reduce() : λ¬Έμμ΄λ μ°κ²°ν μ μλ€.function concat(accumulatedString, item) {
return accumulatedString + item;
}
let words = ["the ", "quick ", "brown ", "fox "];
let sentence = words.reduce(concat);
console.log(sentence);// the quick brown fox
reduceRight()λ λ°°μ΄μΒ μ€λ₯Έμͺ½ μμμμ μΌμͺ½ μμλ‘ μ²λ¦¬νλ λ°©ν₯λ§ λ€λ₯΄λ€.
// reduceRight() : μ€λ₯Έμͺ½μμ μΌμͺ½μΌλ‘ μ²λ¦¬. μμ λ€μ§κΈ°function concat(accumulatedString, item){
return accumulatedString + item
}
let words = ["the ", "quick ", "brown ", "fox "]
let sentence = words.reduceRight(concat);
console.log(sentence);// "fox brown quick the"
2.5.2 μ λ°°μ΄μ λ°ννλ λ°λ³΅μ ν¨μ
map(), filter()Β ν¨μλΒ λͺ¨λ μ λ°°μ΄μ λ°ννλ λ°λ³΅μ ν¨μλ€. map()μ forEach() μ²λΌ λ°°μ΄μ κ° μμμ ν¨μλ₯Ό μ μ©νλ ν¨μλ€. λ€λ§Β map()μ λ°°μ΄ μμμ ν¨μλ₯Ό μ μ©ν κ²°κ³Όλ₯Ό ν¬ν¨νλ μ λ°°μ΄μ λ°ννλ€λ μ μ΄ λ€λ₯΄λ€.
// map() : λ°°μ΄μ κ° μμμ ν¨μλ₯Ό μ μ©νκ³ κ·Έ κ²°κ³Όλ₯Ό ν¬ν¨νλ μ λ°°μ΄μ λ°ννλ€.function curve(grade) {
return (grade += 5);
}
let grades = [77, 65, 81, 92, 83];
let newgrades = grades.map(curve);
console.log(newgrades);// 82, 70, 86, 97, 88
λ¬Έμμ΄μ map() μ¬μ©
function first(word){
return word[0];
}
let words = ["for", "your", "information"]
let acronym = words.map(first)
console.log(acronym.join(""));// "fyi"
toString() μ μ΄μ©ν΄ μμλ₯Ό μΆλ ₯νλ©΄Β μ½€λ§κ° νμλλ―λ‘ κ³΅λ°±λ¬Έμμ΄μ λΆλ¦¬μλ‘ μ¬μ©νλλ‘ join()μ νΈμΆνλ€.
filter()λ every()μ λΉμ·νλ€.Β filter()λ λΆλ¦° ν¨μλ₯Ό λ§μ‘±νλ μμλ₯Ό ν¬ν¨νλ μλ‘μ΄ λ°°μ΄μ λ°ννλ€.
// filter() : λΆλ¦° ν¨μλ₯Ό λ§μ‘±νλ μμλ₯Ό ν¬ν¨νλ μλ‘μ΄ λ°°μ΄μ λ°νfunction isEven(num) {
return num % 2 == 0;
}
function isOdd(num) {
return num % 2 != 0;
}
let nums = [];
for (let i = 0; i < 20; ++i) {
nums[i] = i + 1;
}
let evens = nums.filter(isEven);
console.log("Even numbers: ");
console.log(evens);
let odds = nums.filter(isOdd);
console.log("Odd numbers: ");
console.log(odds);
// filter() : μ±μ μ²λ¦¬μ μ΄μ©function passing(num) {
return num >= 60;
}
let grades = [];
for (let i = 0; i < 20; ++i) {
grades[i] = Math.floor(Math.random() * 101);
}
let passGrades = grades.filter(passing);
console.log("All grades: ");
console.log(grades);
console.log("Passing grades: ");
console.log(passGrades);
λ¬Έμμ΄μ filter() μ μ©.Β eμμ i, c λ€μμ λμ¨ e μμλ iκ° λμ€μ§ μμλ λλ€λ₯Ό ꡬνν μμ
// fliter() : λ¬Έμμ΄μ μ μ©function afterc(str) {
if (str.indexOf("cie") > -1) {
return true;
}
return false;
}
let words = ["recie", "dec", "percie", "dec", "concie"];
let misspelled = words.filter(afterc);
console.log(misspelled);// rec, per, con
2.6 μ΄μ°¨μ λ°°μ΄κ³Ό λ€μ°¨μ λ°°μ΄
μλ°μ€ν¬λ¦½νΈλ κΈ°λ³Έμ μΌλ‘ μΌμ°¨μλ§ μ§μνμ§λ§ λ€μ°¨μ λ°°μ΄μ λ§λ€ μ μλ€.
2.6.1 μ΄μ°¨μ λ°°μ΄ λ§λ€κΈ°
λ°°μ΄μ λ§λ λ€μ κ° μμλ₯Ό λ°°μ΄λ‘ λ§λ€μ΄μΌ νλ€. μ΅μν λ°°μ΄μ ν κ°μλ₯Ό μμμΌ μ΄μ°¨μ λ°°μ΄μ λ§λ€ μ μλ€.
let twod = [];
let rows = 5;
for ( let i = 0; i < rows; ++i ) {
twod[i] = [];
}
λ°°μ΄μ λͺ¨λ μμκ° undefinedκ° λλ€λ λ¨μ μ΄ μλ€.
μ΄ ν¨μλ λ°°μ΄μΒ νκ³Ό μ΄μ κ°μλ₯Ό μ€μ νλ©° ν¨μμ μ 곡λ κ°μΌλ‘ λͺ¨λ μμλ₯Ό μ΄κΈ°ννλ€.
Array.matrix = function (numrows, numcols, initial) {
let arr = [];
for (let i = 0; i < numrows; ++i) {
let columns = [];
for (let j = 0; j < numcols; ++j) {
columns[j] = initial;
}
arr[i] = columns;
}
return arr;
};
let arr = Array.matrix(3, 2, 3);
console.log(arr);
κ°λ¨ν λ°μ΄ν° μ§ν©μ μλ μ½λλ‘ κ°μ₯ μ½κ² λ§λ€ μ μλ€.
let grade = [[89,77], [75,82]];
2.6.2 μ΄μ°¨μ λ°°μ΄ μμ μ²λ¦¬νκΈ°
λ κ°μ§ μ£Όμ ν¨ν΄μ΄ μλ€. ν κ°μ§λ λ°°μ΄μ μ΄μ κΈ°μ€μΌλ‘ νλ κ²μ΄κ³ , λ€λ₯Έ κ²μ νμ κΈ°μ€μΌλ‘ μμλ₯Ό μ²λ¦¬νλ κ²μ΄λ€.
λ ν¨ν΄ λͺ¨λ μ€μ²© forλ¬Έμ μ¬μ©νλ€.Β μ΄ κΈ°μ€ μ²λ¦¬μμλ μΈλΆ 루νκ° νμ²λ¦¬, μμͺ½ 루νκ° μ΄ μ²λ¦¬. grades μμ κ° νμ΄ ν νμμ μ μ μ§ν©μ ν¬ν¨νλ€κ³ κ°μ£Όνλ€. λ°λΌμ νμ λͺ¨λ μ μλ₯Ό λν΄ total λ³μμ μ μ₯ν λ€μ total λ³μλ₯Ό νμ μλ μ μμ κ°μλ‘ λλλ©΄ νκ· μ ꡬν μ μλ€.
let grades = [
[89, 77, 78],
[76, 82, 81],
[91, 94, 89],
];
let total = 0;
let average = 0.0;
for (let row = 0; row < grades.length; ++row) {
for (let col = 0; col < grades[row].length; ++col) {
total += grades[row][col];
}
average = total / grades[row].length;
console.log(
"Student " + parseInt(row + 1) + " average: " + average.toFixed(2)
);
total = 0;
average = 0.0;
}
κ° νμ λ°°μ΄μ ν¬ν¨νλ―λ‘ κ° νμλ length νλ‘νΌν°κ° μλ€.
κ° νμμ μ μ νκ· μ toFixed(n) μ μν΄ μμμ λ μλ¦Ώμλ‘ λ°μ¬λ¦Όλλ€.
ν μ€μ¬μΌλ‘ μ²λ¦¬νλ €λ©΄ μΈλΆ 루νκ° μ΄μ μ²λ¦¬νκ³ λ΄λΆ 루νκ° νμ μ²λ¦¬νλλ‘ λ°κΎΈλ©΄ λλ€.
2.6.3 λ€μλ μν λ°°μ΄
λ°°μ΄μ νμ΄ ν¬ν¨νλ μμμ κ°μκ° μλ‘ λ€λ₯Έ λ°°μ΄μ΄λ€. λ€λ₯Έ μΈμ΄μ λΉν΄Β JSλ κ° νμ κΈΈμ΄λ₯Ό μ νν μ μ μμΌλ―λ‘ λ€μλ μν λ°°μ΄λ μ μ²λ¦¬ν μ μλ€.
2.7 κ°μ²΄λ₯Ό μμλ‘ ν¬ν¨νλ λ°°μ΄
λ°°μ΄μ κ°μ²΄λ μμλ‘ ν¬ν¨ν μ μμΌλ©° μ§κΈκΉμ§ μ΄ν΄λ³Έ ν¨μμ νλ‘νΌν°λ μ λμνλ€.
function Point(x, y) {
this.x = x;
this.y = y;
}
function displayPts(arr) {
for (let i = 0; i < arr.length; ++i) {
console.log(arr[i].x + ", " + arr[i].y);
}
}
let p1 = new Point(1, 2);
let p2 = new Point(3, 5);
let p3 = new Point(2, 8);
let p4 = new Point(4, 4);
let points = [p1, p2, p3, p4];
for (let i = 0; i < points.length; ++i) {
console.log(
"Point " + parseInt(i + 1) + ": " + points[i].x + ", " + points[i].y
);
}
let p5 = new Point(12, -3);
points.push(p5);
console.log("After push : ");
displayPts(points);
points.shift();
console.log("After shift : ");
displayPts(points);
push()λ₯Ό μ΄μ©ν΄ 12, -3μ μΆκ°νμΌλ©° shift()λ₯Ό μ΄μ©ν΄ 1,2 λ₯Ό μ κ±°νλ€.