map 구문이 중첩되는 것을 피하려고 미리 인물 별 그리움 점수를 별도로 정리해서 풀이하였다.
function solution(name, yearning, photo) {
var answer = [];
let name_yearning = {};
// 사용하기 편하도록 인물 별 그리움 점수 별도 정리
name.map((el,i)=>{
// 변수 내용을 key로 삽입하고 싶다면 점 표기법 말고 대괄호 표기법!
name_yearning[el] = yearning[i];
})
// 사진 별 점수 계산
photo.map((paper, i) => {
let sum=0;
paper.map((person)=>{
if(name.includes(person) == true){
sum+=name_yearning[person];
}
})
answer.push(sum);
});
return answer;
}
reduce 함수는 배열의 요소를 순차적으로 순회하며 하나의 값(숫자/배열/객체 등)으로 줄여 return 하는 함수다.
즉, 배열을 기반으로 하나의 값을 도출할 때 사용된다.
function solution(name, yearning, photo) {
let name_yearning = {};
name.map((el,i)=>{
name_yearning[el] = yearning[i];
})
return photo.map((paper, i) =>
paper.map(person=> name_yearning[person] ? name_yearning[person] : 0).reduce((sum, cur)=> sum+cur, 0)
);
}