function square(number) {
return number * number;
}
//키 값이 배열이라면?
//배열의 요소를 제곱한 새로운 배열 리턴
//배열이 아니라면?
function getSquaredElementsAtProperty(obj, property) {
if (Array.isArray(obj[property])) {
return obj[property].map((a) => square(a));
} else {
return [];
}
}
console.log() 첫번째와 두번째가 같은 동작을 하는데 혼동했다.
let key = [2, 1, 5];
function square(number) {
return number * number;
}
console.log(key.map(square));
console.log(
key.map((num) => {
return num * num;
})
);
//처음으로 푼 코드
function computeProductOfAllElements(arr) {
if (arr.length == 0) return 1;
return arr.reduce((acc, cur) => acc * cur);
}
//리팩토링 코드
function computeProductOfAllElements(arr) {
return arr.reduce((acc, cur) => acc * cur, 1);
}
//reduce 이해하고 리팩토링
function getLongestElement(arr) {
return arr.reduce((acc, cur) => (acc.length < cur.length ? cur : acc), "");
}
//처음으로 푼 코드
function findShortestWord(arr) {
//가장 짧은 문자열 리턴
let answer = "";
const strArr = arr.filter((a) => typeof a === "string");
if (strArr.length === 0) return "";
//길이가 젤 짧은 거 구하기
//길이만 담긴 배열 만들기 => 최솟값 인덱스 => indexOf() => 리턴
const numArr = strArr.map((a) => a.length);
console.log(numArr);
return strArr[numArr.indexOf(Math.min(...numArr))];
}
//reduce와 친해진 후
function findShortestWord(arr) {
const strArr = arr.filter((el) => typeof el === "string");
if (strArr.length === 0) return "";
return strArr.reduce((acc, cur) => (acc.length > cur.length ? cur : acc));
}
//다시 푼 코드
function sumOfArraysInArray(arr) {
return arr
.reduce((acc, cur) => acc.concat(cur))
.filter((el) => typeof el === "number")
.reduce((acc, cur) => acc + cur, 0);
}
후기 : reduce를 이해해서 좋았다.