상세 컨텐츠

본문 제목

[자바스크립트] 배열의 고차함수

카테고리 없음

by esoesmio 2023. 5. 9. 04:04

본문

12345를 foreach로 출력해라

 

const arr = [1, 2, 3, 4, 5];

const result = arr.forEach(itm => {
    console.log(itm);
});

이거함 찍어봐

const arr = [1, 2, 3, 4, 5];

// 현존하는 함수를 인자로 - 💡 결과 살펴볼 것
arr.forEach(console.log);

이거함 찍어봐

const arr = [10, 20, 30, 40, 50];

// 콜백함수의 인자가 둘일 때
arr.forEach((itm, idx) => {
    console.log(itm, idx);
});

const logWithIndex = (itm, idx) => {
    console.log(`[${idx}]: ${itm}`);
}

arr.forEach(logWithIndex);

 

 

이게나오게 해봐라

 

const orgArr = [
    { name: '사과', cat: '과일', price: 3000 },
    { name: '오이', cat: '채소', price: 1500 },
    { name: '당근', cat: '채소', price: 2000 },
    { name: '살구', cat: '과일', price: 2500 },
    { name: '피망', cat: '채소', price: 2500 },
    { name: '딸기', cat: '과일', price: 5000 }
];


const arr1 = orgArr.map(itm => {
    // 💡 블록 안에서는 return 문 필요함
    return {
        name: itm.name,
        cat: itm.cat
    }
});

console.log(arr1);

 

const joined = orgArr
.map(({name, cat, price}, idx) => {
  return `${idx + 1}: [${cat[0]}] ${name}: ${price}원`
})
.join('\n - - - - - - - - - \n');

console.log(joined);

 

 

const joined = orgArr
    .map(({name, cat, price}, idx) => {
        return `${idx + 1}: [${cat[0]}] ${name}: ${price}원`
    })
    .join('\n - - - - - - - - - \n');

console.log(joined);

 

 

이 결과가 나오도록 해라

 

const arr = [
    { name: '사과', cat: '과일', price: 3000 },
    { name: '오이', cat: '채소', price: 1500 },
    { name: '당근', cat: '채소', price: 2000 },
    { name: '살구', cat: '과일', price: 2500 },
    { name: '피망', cat: '채소', price: 3500 },
    { name: '딸기', cat: '과일', price: 5000 }
];

console.log(
    arr
        .sort((a, b) => {
            if (a.cat !== b.cat) {
                return a.cat > b.cat ? 1 : -1;
            }
            return a.price > b.price ? 1 : -1;
        })
        .map(({name, cat, price}, idx) => {
            return `${idx + 1}: [${cat[0]}] ${name}: ${price}원`
        })
        .join('\n - - - - - - - - - \n')
);

이게 나오게 해라

 

 

const arr = [1, 2, 3, 4, 5];

// 💡 한 단계만 펼침
console.log(
    arr.flatMap(i => [i, [i], [[i]]])
)



const word = '하나 둘 셋 넷 다섯 여섯 일곱 여덟 아홉 열';

console.log(
    word
        .split(' ')
        .flatMap(i => i.split(''))
);

ㅣ게 나오게 해라

 

const arr = [
    { name: '사과', cat: '과일', price: 3000 },
    { name: '오이', cat: '채소', price: 1500 },
    { name: '당근', cat: '채소', price: 2000 },
    { name: '살구', cat: '과일', price: 2500 },
    { name: '피망', cat: '채소', price: 3500 },
    { name: '딸기', cat: '과일', price: 5000 }
];

const isCheapFruit = i => {
    return i.cat === '과일' && i.price < 3000;
}

console.log(
    arr.find(({cat}) => cat === '채소').name,
    arr.findLast(isCheapFruit).name
);

const arr = [
    { name: '사과', cat: '과일', price: 3000 },
    { name: '오이', cat: '채소', price: 1500 },
    { name: '당근', cat: '채소', price: 2000 },
    { name: '살구', cat: '과일', price: 2500 },
    { name: '피망', cat: '채소', price: 3500 },
    { name: '딸기', cat: '과일', price: 5000 }
];

['과일', '채소'].forEach(category => {
    console.log(
        `${category}의 가격의 합:`,
        arr
            .filter(({cat}) => cat === category)
            .map(({price}) => price)
            .reduce((prev, curr) => prev + curr)
    );
});

댓글 영역