Language/JavaScript

๐Ÿ“š JavaScript ๋ฐฐ์—ด ๊ณ ์ฐจ ํ•จ์ˆ˜ ์ด์ •๋ฆฌ

์ธํŒŒ_ 2022. 7. 28. 11:08

javascript-๊ณ ์ฐจํ•จ์ˆ˜

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด ๊ณ ์ฐจํ•จ์ˆ˜

์—ฌ๋Ÿฌ๋ถ„์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐ์šฐ๋Š” ์ค‘์ด๋ผ๋ฉด, ๊ณ ์ฐจ ํ•จ์ˆ˜(Higher-Order Function) ๋ผ๋Š” ์šฉ์–ด๋ฅผ ์–ผํ• ๋“ค์–ด๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๊ณ ์ฐจ ํ•จ์ˆ˜๋ž€, ํ•จ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋ฐ›๊ฑฐ๋‚˜ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ผ์ปซ๋Š”๋‹ค. ์š”์ฆ˜ ์ž์ฃผ ๊ฑฐ๋ก ๋˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ด๊ธฐ๋„ ํ•˜๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์•Œ๋งž์€ ์–ธ์–ด๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ํŠน์„ฑ์ด๊ธฐ๋„ ํ•˜๋‹ค.

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€?
ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ธธ ์ˆ˜๋„ ์žˆ๊ณ  ๋ฐ˜ํ™˜(return) ๊ฐ’์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ˜•ํƒœ๋ฅผ ๋งํ•œ๋‹ค. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ, ๊ฐœ๋ฐœ์ž๋Š” ํ•จ์ˆ˜๋ผ๋Š” ์šฉ์–ด ํ•˜์—์„œ ์ƒ๊ฐํ•˜๊ณ  ์ฝ”๋”ฉํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ด‘๋ฒ”์œ„ ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฐ์—ด์˜ ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์ด์ •๋ฆฌ ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ ๋ณด๊ฒ ๋‹ค. ๋˜‘๊ฐ™์ด ๋ฐฐ์—ด์„ ์ˆœํšŒํ•œ๋‹ค๋Š” ์ ์—์„œ ์ด๋“ค์€ ๋ชจ๋‘ ๋น„์Šทํ•˜์ง€๋งŒ ๋ฆฌํ„ดํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ๊ธฐ ๋‹ค๋ฅด๋‹ˆ ์ด๋ฅผ ์œ ์‹ฌํžˆ ๋ณด๋ฉฐ ์ตํžˆ๋Š” ๊ฒƒ์„ ๊ถŒํ•œ๋‹ค.


.forEach()

  • for๋ฌธ์„ ๋Œ€์ฒดํ•˜๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜.
  • ๋ฐ˜๋ณต๋ฌธ์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ์ด๊ณ  ๋‚ด๋ถ€์—์„œ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰

javascript-foreach

const numberArr = [1, 2, 3, 4, 5];
let total = 0;
 
numberArr.forEach((item) => {
    total += item;
});
 
console.log(total); // 15

.map()

  • forEach ๊ฐ™์ด ์ˆœํšŒํ•˜๋ฉด์„œ, ์ฝœ๋ฐฑํ•จ์ˆ˜์—์„œ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜

javascript-map

const numberArr = [1, 2, 3, 4, 5];
const numberMapArr = numberArr.map((item) => {
    return (item % 2 === 0) ? 'even' : 'odd'; // ์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋„ฃ์–ด ๋ฐฐ์—ด ๋ฐ˜ํ™˜
});
 
console.log(numberMapArr); // ['odd', 'even', 'odd', 'even', 'odd']
 

[JS] ๐Ÿ“š ๋ฐฐ์—ด ๊ณ ์ฐจํ•จ์ˆ˜ ๐Ÿš‡ map()

๋งต ํ•จ์ˆ˜ .map() map์€ callback ํ•จ์ˆ˜๋ฅผ ๊ฐ๊ฐ์˜ ์š”์†Œ์— ๋Œ€ํ•ด ํ•œ๋ฒˆ์”ฉ ์ˆœ์„œ๋Œ€๋กœ ๋ถˆ๋Ÿฌ ๊ทธ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค. array๋ฅผ ๋Œ๋ฉด์„œ array ๋กœ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. array.map(callbackFunction(currenVal..

inpa.tistory.com

[ forEach์™€ map์˜ ์ฐจ์ด ]

โ€‹๋‘ ๋ฉ”์„œ๋“œ ๋ชจ๋‘ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋Š” ๊ฒƒ์€ ๋™์ผํ•˜์ง€๋งŒ,
forEach()์˜ ๊ฒฝ์šฐ ๊ฐ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•œ ์—ฐ์‚ฐ์ด ์ด๋ฃจ์–ด์ง€๊ณ 
map()์˜ ๊ฒฝ์šฐ์—” ๊ฐ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋งตํ•‘ํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์ด ๋ฐ˜ํ™˜๋˜๋Š” ์ ์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.
โ€‹
์ •๋ฆฌํ•˜๋ฉด forEach()๋Š” for๋ฌธ์„ ๋Œ€์ฒดํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  map()์€ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ ์žํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

.find()

  • indexOf() ๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์ธ๋ฑ์Šค๋กœ ์ฃผ๋Š”๊ฑฐ๊ณ ,
    include()๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ Bool๋กœ ์ฃผ๋Š”๊ฑฐ๋ฉด,
    find()๋Š” ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค
  • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ์‹คํ–‰์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์— ํ•ด๋‹นํ•˜๋Š” ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜

javascript-find

const numberArr = [1, 3, 3, 5, 7];
const objectArr = [
    { name: 'Harry', age: 20 },
    { name: 'Kim', age: 30 },
    { name: 'Steve', age: 40 }
];
 
console.log(objectArr.find(item => {
   return item.age === 20 // ํ•ด๋‹น์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋ฉด item๊ฐ’ ๋ฐ˜ํ™˜
}); // {name: "Harry", age: 20}

// find๋Š” ํ•˜๋‚˜๋งŒ ์ฐพ์Œ. ๋’ค์—์„œ ๋ฐฐ์šธ filter์€ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ฐฐ์—ด๋กœ
console.log(numberArr.find(item => item === 3));  // 3
console.log(numberArr.filter(item => item === 3));  // [3, 3]

.findIndex()

  • ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ indexOf() ์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜ ๋ฒ„์ ผ.
  • ๊ณ ์ฐจํ•จ์ˆ˜ find()์˜ ๋ฆฌํ„ด๊ฐ’์ด ์ธ๋ฑ์Šค์ธ ๋ฒ„์ ผ.

javascript-findindex

const objectArr = [
    { name: 'Harry', age: 20 },
    { name: 'Kim', age: 30 },
    { name: 'Steve', age: 40 }
];
 
console.log(objectArr.findIndex(item => {
   return item.age === 20 // ํ•ด๋‹น์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋ฉด item์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
}); // 0

console.log(objectArr.findIndex(item => item.name === 'Kim')); // 1

.filter()

  • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด true์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋กœ๋งŒ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜.
  • ํ•œ๋งˆ๋””๋กœ find()์˜ ์ฐพ์•„์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ map()์˜ ๋ฐฐ์—ด ์ƒ์„ฑ ๊ธฐ๋Šฅ์˜ ์œตํ•ฉ ๋ฒ„์ ผ.

javascript-filter

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

const numberFilterArr = numberArr.filter((item) => {
    return item % 2 === 0; // ํ•ด๋‹น์กฐ๊ฑด์— ๋ถ€ํ•ฉ์œผ๋ฉด item์„ ๋„ฃ์–ด ๋ฐฐ์—ด ๋ฐ˜ํ™˜
});

console.log(numberFilterArr); // [2, 4]

.reduce()

  • ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ์‹คํ–‰๋œ ๋ฐ˜ํ™˜๊ฐ’(initialValue)์„ ์ „๋‹ฌ ๋ฐ›์•„ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ๋ฐ˜ํ™˜.
  • ์ฒซ๋ฒˆ์งธ ์ธ์ž(accumulator)์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฐฐ์—ด๊ฐ’์ธ ๋‘๋ฒˆ์งธ ์ธ์ž(currentvalue) ์„ ์ˆœํšŒํ•˜๋ฉฐ accumulator+=currentvalue ์„ ์‹คํ–‰.
  • ์‚ฌ์‹ค์ƒ forEach, map, filter๊ธฐ๋Šฅ์„ reduce๋กœ ๋ชจ๋‘ ๊ตฌํ˜„ํ•ด์„œ ์“ธ์ˆœ ์žˆ์–ด ๊ณ ์ฐจํ•จ์ˆ˜์˜ ๋ถ€๋ชจ๋ผ๊ณ  ๋ถˆ๋ฆผ

javascript-reduce

reduce()ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ initialValue ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ
- accumulator : ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’
- currentValue : ๋ฐฐ์—ด์˜ ๋‘๋ฒˆ์งธ ๊ฐ’
โ€‹
reduce()ํ•จ์ˆ˜ ํ˜ธ์ถœ์‹œ initialValue ๊ฐ’์ด ์žˆ๋Š” ๊ฒฝ์šฐ
- accumulator : initialValue๊ฐ€ ์ง€์ •ํ•œ ๊ฐ’
- currentValue : ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’
const numberArr = [1, 2, 3, 4, 5];
 
const sum = numberArr.reduce((previousValue, currentValue, currentIndex, thisArray) => {
    console.log('Current Index: ' + currentIndex + ' / Previous Value: ' + previousValue + ' / Current Value: ' + currentValue);
    
    return previousValue + currentValue; // ์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ˆ„์‚ฐ๊ธฐpreviousValue์— ๋„ฃ์–ด ์ตœ์ข…๊ฐ’์„ ์–ป๋Š”๋‹ค.
}, 0);
 
console.log('Sum: ' + sum);
/*
Current Index: 0 / Previous Value: 0 / Current Value: 1
Current Index: 1 / Previous Value: 1 / Current Value: 2
Current Index: 2 / Previous Value: 3 / Current Value: 3
Current Index: 3 / Previous Value: 6 / Current Value: 4
Current Index: 4 / Previous Value: 10 / Current Value: 5
Sum: 15
*/
ํ˜ธ์ถœ ์ˆœ์„œ previousValue currentValue currentIndex thisArray ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’
1 0 1 0 [1, 2, 3, 4, 5] 1
2 1 2 1 [1, 2, 3, 4, 5] 3
3 3 3 2 [1, 2, 3, 4, 5] 6
4 6 4 3 [1, 2, 3, 4, 5] 10
5 10 5 4 [1, 2, 3, 4, 5] 15
 

[JS] ๐Ÿ“š ๋ฐฐ์—ด ๊ณ ์ฐจํ•จ์ˆ˜ ๐Ÿš‡ reduce()

[reduce / reduceRight] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Array.prototype ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์„ ๋ฐ˜๋ณตํ•ด์„œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ ํ›„ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ˜ํ™˜ reduce ๋Š” ์™ผ์ชฝ ์›์†Œ๋ถ€ํ„ฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ reduceRight ๋Š” ์˜ค๋ฅธ์ชฝ ์›์†Œ๋ถ€ํ„ฐ ์ฝœ

inpa.tistory.com


.sort()

  • ๋ฐฐ์—ด ์ •๋ ฌ.
  • ๋‹จ, ๋ณต์‚ฌ๋ณธ์ด ๋งŒ๋“ค์–ด์ง€๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์› ๋ฐฐ์—ด์ด ์ •๋ ฌ๋จ.
  • ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์„ ์–ด๋Š ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ• ์ง€ ์ง€์ •ํ•ด์•ผํ•จ (๋ฒˆ๊ฑฐ๋กœ์›€)

javascript-sort

var arr = ['red', 'blue', 'green', 'white', 'black'];
arr.sort(); // [ 'black', 'blue', 'green', 'red', 'white' ]

โ€‹์œ„์™€ ๊ฐ™์ด ๋ฌธ์ž๋ฅผ ์ •๋ ฌํ• ๋•Œ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ, ์ˆซ์ž๋ฅผ ์ •๋ ฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ABC ์ˆœ์œผ๋กœ ์ •๋ ฌ์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด ์กฐ์ž‘์ด ํ•„์š”ํ•˜๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์ด, ์ฝœ๋ฐฑํ•จ์ˆ˜์—์„œ ์ธ์ž ๋‘๊ฐœ๋ฅผ ๋ฐ›์•„, ๋‘ ์ˆ˜์˜ ์ฐจ๊ฐ€ ์–‘์ˆ˜๊ฐ’(ํฐ๊ฐ’)์ด๋ƒ ์Œ์ˆ˜๊ฐ’(์ž‘์€๊ฐ’)์ด๋ƒ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค.

var arr2 = [1,2,3,10,50,70,8,4];
arr2.sort(); // [ 1, 10, 2, 3, 4, 50, 70, 8 ]

arr2.sort(function(a, b)  {
  console.log(a,b);
});
/*
10 1
2 10
3 2
4 3
50 4
70 50
8 70
*/

arr.sort(function(a, b)  {
  if(a > b) return 1;
  if(a === b) return 0;
  if(a < b) return -1;
}); // [ 1, 2, 3, 4, 8, 10, 50, 70 ]

 

๐Ÿ“Œ ์ˆซ์ž ์ •๋ ฌ

const arr = [2, 1, 3, 10];

arr.sort(function(a, b)  {
  return a - b;
});  // [1, 2, 3, 10] ์˜ค๋ฆ„์ฐจ์ˆœ

arr.sort(function(a, b)  {
  return b - a;
}); // [10, 3, 2, 1] ๋‚ด๋ฆฝ์ฐจ์ˆœ

โ€‹

๐Ÿ“Œ ๋ฌธ์ž ์ •๋ ฌ

const arr = ['banana', 'b', 'boy'];

arr.sort(); // ['b', 'banana', 'boy']

arr.sort(function(a, b) {
  if(a < b) return 1;
  if(a > b) return -1;
  if(a === b) return 0;
});  // ['boy', 'banana', 'b'] ๋‚ด๋ฆผ์ฐจ์ˆœ

โ€‹

๐Ÿ“Œ ๋ฌธ์ž(๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„์—†์ด) ์ •๋ ฌ

const arr = ['banana', 'b', 'Boy'];

arr.sort();  // ['Boy','b','banana']
// sort() ํ•จ์ˆ˜๋กœ ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜๋ฉด, ๋Œ€๋ฌธ์ž๊ฐ€ ์†Œ๋ฌธ์ž๋ณด๋‹ค ์•ž์— ์˜ค๋„๋ก ์ •๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค.
// ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋Œ€๋ฌธ์ž๊ฐ€ ์†Œ๋ฌธ์ž๋ณด๋‹ค ์•ž์„œ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

arr.sort(function(a, b) {
  const upperCaseA = a.toUpperCase();
  const upperCaseB = b.toUpperCase();
  
  if(upperCaseA > upperCaseB) return 1;
  if(upperCaseA < upperCaseB) return -1;
  if(upperCaseA === upperCaseB) return 0;
}); // ['b', 'banana', 'Boy'] ์˜ค๋ฆ„์ฐจ์ˆœ

arr.sort(function(a, b) {
  const upperCaseA = a.toUpperCase();
  const upperCaseB = b.toUpperCase();
  
  if(upperCaseA < upperCaseB) return 1;
  if(upperCaseA > upperCaseB) return -1;
  if(upperCaseA === upperCaseB) return 0;
}); // ['Boy', 'banana', 'b'] ๋‚ด๋ฆผ์ฐจ์ˆœ

โ€‹

๐Ÿ“Œ ๊ฐ์ฒด ์ •๋ ฌ

const arr = [
  {name: 'banana', price: 3000}, 
  {name: 'apple', price: 1000},
  {name: 'orange', price: 500}
];

arr.sort(function(a, b) {
  return a.price - b.price; // price ์ˆซ์ž๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
});
/*
{"name":"orange","price":500}
{"name":"apple","price":1000}
{"name":"banana","price":3000}
*/

.some()

  • ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ์ธ include()์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜ ๋ฒ„์ „.
  • include๋Š” ๊ฐ’์ด ์žˆ๋ƒ์— ๋”ฐ๋ฅธ bool์ด๋ฉด, some์€ ํ•จ์ˆ˜์˜ ๋กœ์ง์— ๋”ฐ๋ฅธ bool.
  • ๋ฐฐ์—ด์˜ ์š”์†Œ๋“ค์„ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜(์กฐ๊ฑด)์„ ํ†ต๊ณผํ•˜๋Š”๋ฐ ํ•œ๊ฐœ๋ผ๋„ ํ†ต๊ณผ๋˜๋ฉด true, ์•„๋‹๋•Œ์—๋Š” false๋ฅผ ์ถœ๋ ฅ.
  • ๋นˆ ๋ฐฐ์—ด๋กœ ํ•จ์ˆ˜(์กฐ๊ฑด)์„ ํ†ต๊ณผํ•˜๋ฉด ๋ฌด์กฐ๊ฑด false๋ฅผ ์ถœ๋ ฅ.
  • ์ด์™€๊ฐ™์ด some์ด๋ผ๋Š” ์ด๋ฆ„์€, ํ•จ์ˆ˜(์กฐ๊ฑด)์— ๋ถ€ํ•ฉํ•œ ๊ฐฏ์ˆ˜๊ฐ€ some์ด๋ฉด true๋ผ๋Š” ๋œป์—์„œ ๋น„๋กฏ๋จ.

javascript-some

const array = [1, 3, 5];

// ์ง์ˆ˜์ธ์ง€ ์ฒดํฌ
const result = array.some((currentValue) => {
	return currentValue % 2 === 0;
})

console.log(result); // ๋ฆฌํ„ด ๊ฐ’ : false
// ๊ทธ ์ด์œ ๋Š” array์˜ 3๊ฐœ์˜ ์š”์†Œ ๋ชจ๋‘ 2๋กœ ๋‚˜๋ˆŒ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
// ํ•˜๋‚˜๋ผ๋„ ๋ถ€ํ•ฉํ•œ ์กฐ๊ฑด์— ๋งž์œผ๋ฉด true, ๋ชจ๋‘ ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉด false

// -----------------------------------------------

const array2 = [1, 2, 3, 5];

const result2 = array2.some((currentValue) => {
	return currentValue % 2 === 0;
})
console.log(result2); // ๋ฆฌํ„ด ๊ฐ’ : true
// ๊ทธ ์ด์œ ๋Š” array์˜ 4๊ฐœ์˜ ์š”์†Œ ๋ชจ๋‘ 2๋กœ ๋‚˜๋ˆŒ๋•Œ ๋‚˜๋จธ์ง€๊ฐ€ 0์ธ ์š”์†Œ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
// ํ•˜๋‚˜๋ผ๋„ ๋ถ€ํ•ฉํ•œ ์กฐ๊ฑด์— ๋งž์œผ๋ฉด true, ๋ชจ๋‘ ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์œผ๋ฉด false

.every()

  • some() ์˜ ๋ฐ˜๋Œ€ ๋ฒ„์ „
  • ๋ฐฐ์—ด์•ˆ์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜(์กฐ๊ฑด)์„ ๋ชจ๋‘ ํ†ต๊ณผํ•˜๋ฉด true, ํ•œ ์š”์†Œ๋ผ๋„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด false๋ฅผ ์ถœ๋ ฅ.
  • ๋นˆ ๋ฐฐ์—ด์„ ํ•จ์ˆ˜์— ์ ์šฉ์‹œํ‚ค๋ฉด ๋ฌด์กฐ๊ฑด true๋ฅผ ๋ฐ˜ํ™˜.
  • ์ด์™€๊ฐ™์ด every์ด๋ผ๋Š” ์ด๋ฆ„์€, ํ•จ์ˆ˜(์กฐ๊ฑด)์— ๋ถ€ํ•ฉํ•œ ๊ฐฏ์ˆ˜๊ฐ€ every์ด๋ฉด true๋ผ๋Š” ๋œป์—์„œ ๋น„๋กฏ๋จ.

javascript-every

const array = [1, 30, 39, 29, 13];

const result = array.every((currentValue) => {
	return currentValue < 40;
})

console.log(result); // ๋ฆฌํ„ด ๊ฐ’ : true
// ๊ทธ ์ด์œ ๋Š” array์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ 40๋ณด๋‹ค ์ž‘๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
// ํ•˜๋‚˜๋ผ๋„ ๋ถ€ํ•ฉํ•œ ์กฐ๊ฑด์— ๋งž์ง€ ์•ˆ์œผ๋ฉด false, ๋ชจ๋‘ ๋ถ€ํ•ฉํ•˜๋ฉด true

// -----------------------------------------------

const array2 = [1, 30, 39, 29, 100, 13];

const result2 = array2.every((currentValue) => {
	return currentValue < 40;
})
console.log(result2); // ๋ฆฌํ„ด ๊ฐ’ : false
// ๊ทธ ์ด์œ ๋Š” array์˜ 1๊ฐœ์˜ ์š”์†Œ 100์ด 40๋ณด๋‹ค ํฌ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
// ํ•˜๋‚˜๋ผ๋„ ๋ถ€ํ•ฉํ•œ ์กฐ๊ฑด์— ๋งž์ง€ ์•ˆ์œผ๋ฉด false, ๋ชจ๋‘ ๋ถ€ํ•ฉํ•˜๋ฉด true

# ์ฐธ๊ณ ์ž๋ฃŒ