참고 영상 : https://youtu.be/WdSQK72G7tw
Javascript의 Array 객체에서 사용할 수 있는 유용한 알고리즘들에 대해 알아보자
const arr = [1, 2, 3, 4, 5]
const result = arr.map((num) => num * 2)
console.log(result)
class MySkill {
constructor(name, score) {
this.name = name;
this.score = score;
}
}
const javascript = new MySkill("javascript", 30);
const python = new MySkill("python", 50);
const typescript = new MySkill("typescript", 10);
const mySkills = [javascript, python, typescript];
mySkills.map((mySkill) => {
console.log(`My ${mySkill.name} score is ${mySkill.score}.`);
});
any()
와 비슷하다.const numbers = [1, 2, 3, 4, 5];
const isHavingThree = numbers.some((number) => number === 3)
const isHavingZero = numbers.some((number) => number === 0)
console.log(`Is having 3? ${isHavingThree}`);
console.log(`Is having 0? ${isHavingZero}`);
const numbers = [1, 2, 3, 4, 5];
const isHavingThree = numbers.some((number) => {
console.log(`Searching... ${number}`);
return number === 3;
});
console.log(`Is having 3? ${isHavingThree}`);
const isHavingZero = numbers.some((number) => {
console.log(`Searching... ${number}`);
return number === 0;
});
console.log(`Is having 0? ${isHavingZero}`);
false
를 출력하였다.all()
과 비슷하다.const numbers = [0, 1, 2, 3, 4, 5];
const isNumber = numbers.every((number) => typeof number === "number");
const isPositve = numbers.every((number) => number > 0);
console.log(`Is every elemnet number? ${isNumber}`);
console.log(`Is every element positive? ${isPositve}`);
filter()
와 비슷하다.const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const even_numbers = numbers.filter((number) => number % 2 === 0)
console.log(even_numbers)
functools
내장모듈의 reduce
를 import 하여 사용할 수 있다.acc
에 저장된다.acc
(prev) : 누적값cur
(curr) : 현재값idx?
: 현재 인덱스src?
: 원본 배열reduce(acc, cur, idx, src)
: 리듀스 함수initVal?
: acc의 초기값 (생략 가능)const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const reducedNumbrs = numbers.reduce((acc, cur, idx) => {
console.log(`acc: ${acc}, cur: ${cur}, idx: ${idx}`);
return acc + cur;
}, 0);
console.log(reducedNumbrs);
// 45
※ 리듀스 함수의 결과를 반환하지 않으면 acc 값은 undefined가 된다.
파이썬을 사용하면서 경험해본 것들이라 다소 익숙했다.
다만 reduce
메서드는 본 적이 없어서 신기했는데, 매번 별도로 변수를 선언하고 for loop을 돌면서 변수값을 갱신할 필요 없이 reduce로 해결하면 훨씬 코드를 적게 작성하면서 원하는 기능을 처리할 수 있을 것 같다.
python3에서도 내장모듈을 import 하는 것을 통해 사용할 수 있다니 기회가 된다면 알고리즘 문제 풀이에서 이용해봐야겠다.