Q.
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
function solution(a, s) {
let answer = []
for(let i=0; i < a.length; i++){
s[i] == true
? answer.push(a[i])
: answer.push(-a[i])
}
return answer.reduce((a,b) => a+b);
}
각 배열의 인덱스 값을 매칭시켜서 하나의 정답 리턴
그냥 기본적이고 생각나는대로 풀었다,,
function solution(a, s) {
let result = 0
a.forEach((e,i) =>
s[i] == true
? result += (1 * e)
: result += (-1 * e)
)
return result
}
forEach로 풀었는데 딱히 간결해진거 같지 않다?
function solution(absolutes, signs) {
return absolutes.reduce((acc, val, i) => acc + (val * (signs[i] ? 1 : -1)), 0);
}
reduce(누산값, 현재값, 인덱스)
누산값(초기값 0 )
+현재값 곱하기 signs배열의[i]번째가 true(1)라면 양수인 1 false라면 음수인(-1)
굿챱