두 개의 함수를 입력받아 두 함수가 결합된 새로운 함수를 리턴해야 합니다.
function compose2(func1, func2) {
return function (num){
return func1(func2(num));
}
}
함수들을 입력받아 함수들이 입력된 차례대로 결합된 새로운 함수 리턴
function pipe(...funcs) {
return function (num){
let result = num;
for(let i = 0; i < funcs.length; i++){
result = funcs[i](result);
}
return result;
}
}
배열과 임의값(discarder
)을 입력받아 기존 배열에서 discarder
와 일치하는 요소가 제거된 새로운 배열을 리턴해야 한다.
function removeElement(arr, discarder) {
return arr.filter(function (el) {
if(el !== discarder){
return true
}
else{
return false;
}
})
}
객체와 키를 입력받아 키에 해당하는 값이 배열인 경우, 100보다 작은 요소들만 갖는 배열을 리턴해야한다.
function lessThan100(number) {
return number < 100;
}
function getElementsLessThan100AtProperty(obj, property) {
let arr = obj[property];
if(Array.isArray(arr)){
return arr.filter(function (el){
if(typeof(el) === 'number'){
return lessThan100(el);
}
})
}
else{
return [];
}
}
--------------------------------------------------------------------------
function lessThan100(number) {
return typeof(number) === 'number' && number < 100;
}
function getElementsLessThan100AtProperty(obj, property) {
let arr = obj[property];
if(Array.isArray(arr)){
return arr.filter(lessThan100);
}
else{
return [];
}
}
// 만화책 모음
const cartoons = [
{
id: 1,
bookType: 'cartoon',
title: '식객',
subtitle: '어머니의 쌀',
createdAt: '2003-09-09',
genre: '요리',
artist: '허영만',
averageScore: 9.66,
},
{
id: 2,
// ..
},
// ...
];
// 만화책 한 권의 부제를 리턴하는 로직(함수)
const findSubtitle = function (cartoon) {
return cartoon.subtitle;
};
// 각 책의 부제 모음
const subtitles = cartoons.map(findSubtitle); // ['어머니의 쌀', ...]
오답노트
객체와 키를 입력받아 18세 이상인 사람의 이름을 요소로 갖는 배열을 리턴
function getOnlyAllowedToDrink(arr) {
const list = arr.filter(function(el){
return el.age >= 18
})
return list.map(function(el){
return el.name;
})
}
function computeSumOfAllElements(arr) {
if (arr.length === 0) return 0
return arr.reduce(function(acc, val){
return acc + val;
})
}
let output = computeSumOfAllElements([1, 2, 3]);
console.log(output); // --> 6
오답노트
객체를 요소를 가지는 배열과 문자열을 입력받아 각 요소의 animal
속성값이 문자열과 일치할 경우, 해당 요소의 score
속성값을 모두 더한 값을 리턴해야한다
function calculateScore(records, value) {
return records.reduce(function(acc, val){
if(value === val.animal){
return acc + val.score
}
else{
return acc
}
}, 0)
}
문자열을 요소로 갖는 배열을 입력받아 배열에서 가장 긴 문자열의 길이를 리턴
function getLengthOfLongestElement(arr) {
if (arr.length === 0) return 0
return arr.reduce(function(acc, cur){
if(acc.length >= cur.length){
return acc;
}
return cur;
}).length
}
2차원 배열을 다 합쳐서 단일 배열로 리턴하기
function joinArrayOfArrays(arr) {
return arr.reduce(function(acc, cur){
return acc.concat(cur)
})
}
오답노트
학생의 정보가 담긴 객체를 요소로 갖는 배열을 입력받아 아래 조건에 맞게 변형된 배열을 리턴
grades
속성값은 평균값(number
타입으로 바꿈)function studentReports(students) {
const stu = students.filter(function(el){
if(el.gender === 'female'){
return el;
}
})
return stu.map(function(el){
const sum = el.grades.reduce(function(acc,cur){
return acc + cur;
})
const avg = sum / el.grades.length
el.grades = avg;
return el;
})
}