2022.04.08. 노마드코더 뉴스레터 메일을 읽고 (2/3)
자바스크립트 8가지 팁
URL : https://javascript.plainenglish.io/8-javascript-tricks-to-make-you-a-better-programmer-948b5a3c35b4
8 JavaScript Tricks to Make You a Better Programmer
Make your JavaScript more readable and extensible with these code tips.
javascript.plainenglish.io
1. Reduce if...else noodle code
누들 코드 사용을 줄이세요
const gerPriceByName = (name) => {
if (name === 'one') {
return 30
} else if (name === 'two') {
return 20
} else if (name === 'three') {
return 10
}
console.log(getPriceByName('1'))
}
새로운 조건이 필요하여 추가하고 싶을 때, 위처럼 if...else문을 반복하는 것이 아니라,
아래처럼 map을 사용해보세요.
const gerPriceByName = (name) => {
const map = {
'1': 30,
'2': 20,
'3': 10,
...
}
return map[name]
}
console.log(getPriceByName('1'))
2. Use "filter" and "map" instead of "for" loops
for 루프 대신에 filter, map을 사용해보세요.
const foods = [
{
name: 'Hamburger',
group: 1,
},
{
name: 'Icecrean',
group: 2,
},
{
name: 'Fries',
group: 3,
},
{
name: 'Cake',
group: 4,
},
]
위 데이터에서 그룹 1에 속하는 음식을 찾으려면 어떻게 해야할까?
아래에서 for 를 사용 하는 것보다 filter, map을 사용하면 소스가 간단해집니다.
const names = []
for (let i = 0, len = foods.length; i < len; i++) {
if (foods[i].group === 1) {
names.push(foods[i].name)
}
}
const names = foods
.filter((food) => food.group === 1)
.map((food) => food.name)
console.log(names)
3. Swap two values using destructuring
두 변수의 값을 교환하려면 어떻게 하는가?
let myFood = 'Hamburger'
let yourFood = 'Coffee'
let tempFood = myFood
myFood = yourFood
yourFood = tempFood
console.log(myFood, yourFood)
let myFood = 'Hamburger'
let yourFood = 'Coffee'
;[myFood, yourFood] = [yourFood, myFood]
console.log(myFood, yourFood)
4. Smarter Object.entries
맵에서 데이터를 가져올때 Object.entries를 사용하자.
Object.entries 사용 시 for 와는 다르게 prototype 데이터는 가져오지 않는다.
const foodMap = {
'Hamburger': 30,
'Icecream': 20,
'Fries': 10,
'Chocolate': 5,
}
Object.prototype['Sandwich'] = 40
for (const key in foodMap) {
console.log(key, foodMap[key])
}
Object.entries(foodMap).forEach(([key, value]) => {
console.log(key, value)
})
5. Easy way to flatten an array
배열간 병합?! 정렬?!에 더 편한 방법을 사용하자.
const foods = [['Hamburger', ['Chocolate']], ['Icecream', ['Fries', ['Cake']]]]
console.log(foods)
const flattenFoods = (foods) => {
return foods.reduce((res, food) => {
return res.concat(Array.isArray(food) ? flattenFoods(food) : food)
}, [])
}
console.log(flattenFoods(foods))
console.log('-----------------------------')
console.log(foods)
console.log(foods.flat(Infinity))
결과는 같다.
6. Rounding Trick
소수점 처리에 '~~' 연산자를 사용하자.
const foods = [
{
name: 'Hamburger',
price: 30.89
},
{
name: 'Icecream',
price: 20.71
},
{
name: 'Fries',
price: 10.31
},
]
console.log(foods)
const discountedFoods = foods.map((it) => {
return {
name: it.name,
price: ~~it.price
}
})
console.log(discountedFoods)
7. Use reduce to calculate the sum
합 계산에 redeuce를 사용해보자.
const foods = [
{name: 'Hamburger', price: 30, amount: 10,},
{name: 'Icecream', price: 20, amount: 3,},
{name: 'Fries', price: 10, amount: 5,},
{name: 'Tea', price: 5, amount: 9,},
]
let sum = 0
foods.forEach((food) => {
sum += food.price * food.amount
})
console.log(sum)
let sum2 = foods.reduce((res, food) => res += food.price * food.amount, 0)
console.log(sum2)
같은 결과를 구할 수 있다.
8. Use console.table instead of console.log
console.log 대신에 console.table을 사용해보자.
const foods = [
{name: 'Hamburger', price: 30.89, group: 1,},
{name: 'Icecream', price: 20.71, group: 1,},
{name: 'Fries', price: 10.31, group: 2,},
{name: 'Tea', price: 5.98, group: 2,},
]
console.log(foods)
console.table(foods)
테이블 형식으로 데이터가 출력된다. 이런 방법도 있었구나..