요소1. 누산기accumulator (acc)
누산기accmulator는 콜백의 반환값을 누적. 콜백의 이전 반환값 또는, 콜백의 첫 번째 호출이다.
요소2. 현재 값 (cur)
처리할 현재 요소
요소3. 현재 인덱스 (idx)
써도되고 안해도되고..
요소4. 원본 배열 (src)
써도되고 안해도되고..
let total = [1, 2, 3, 4, 5].reduce(
( acc, curr ) => acc + curr,
0
);
console.log(total) //15
let total = [{quntity: 1}, {quntity: 2}, {quntity: 1}].reduce(
(acc, cur) => acc + cur.quntity
, 0
)
console.log(total) // 결과값: 4
`new Map()`
맵을 만든다.
`map.set(key, value)`
key를 이용해 value를 저장한다.
`map.get(key)`
`key`에 해당하는 값을 반환한다.
key가 존재하지 않으면 undefined를 반환
`map.has(key)`
key가 존재하면 true, 존재하지 않으면 false를 반환
`map.delete(key)`
key에 해당하는 값을 삭제
`map.clear()`
맵 안의 모든 요소를 제거
`map.size`
요소의 개수를 반환
let visitsCountMap = new Map();
// john을 맵의 키로 사용
visitsCountMap.set(john, 123);
alert( visitsCountMap.get(john) ); // 123
let recipeMap = new Map([
['cucumber', 500],
['tomatoes', 350],
['onion', 50]
]);
// 키(vegetable)를 대상으로 순회
for (let vegetable of recipeMap.keys()) {
alert(vegetable); // cucumber, tomatoes, onion
}
// 값(amount)을 대상으로 순회
for (let amount of recipeMap.values()) {
alert(amount); // 500, 350, 50
}
// [키, 값] 쌍을 대상으로 순회
for (let entry of recipeMap) { // recipeMap.entries()와 동일
alert(entry); // cucumber,500 ...
}
function solution(pp,cpl){
let key = new Map()
for(let i = 0; i < cpl.length; i++){
if(!key.has(cpl[i])){
key.set(cpl[i],1)
}else{
key.set(cpl[i], key.get(cpl[i])+1)
}
}
for(let i = 0; i < pp.length; i++){
if(!key.has(pp[i])){
return pp[i]
}else{
let count = key.get(pp[i])
if(count == 0){
return pp[i]
}else{
key.set(pp[i], count -1)
}
}
}
}
//내가 쓴 코드
function solution(x) {
let harshad = String(x).split('')
let sum = harshad.reduce((acc,curr)=> acc + +curr,0)
return x%sum == 0
}
//신기했던 코드
function solution(x) {
return x%eval([...x.toString()].join("+")) ? false : true;
}
x % eval(...) == 0
( 나머지가 0 )이라는 의미를 False로 가져가서 바로 삼항연산자로 이용가능하다.//천재구나 했던 효율성 끝판왕코드
function solution(x) {
let num = x;
let sum = 0;
do {
sum += x%10;
x = Math.floor(x/10);
} while (x>0);
return !(num%sum);
}
function solution(numbers) {
let sums = []
for(let i = 0; i < numbers.length-1; i++)
for(let j = i+1; j < numbers.length;j++){
let sum = numbers[i]+numbers[j]
!sums.includes(sum) ? sums.push(sum) : null
}
return sums.sort((a,b)=> a-b)
const answer = [...new Set(temp)]