반응형
Array.prototype.some() 은 확인할 list 내 원하는 조건을 만족하는 값이 하나라도 있을 경우 true 를 return
Array.prototype.every() 는 확인할 list 내 모든 값이 조건을 만족해야 true 를 return (하나라도 만족하지 못할 경우 false)
예시를 통해 이해하자면
const isBiggerObjInListThan = (list, compareValue) => {
console.log(`isBiggerObjInListThan ${compareValue} : ${list.some((item) => item.value > compareValue)}`);
};
const arr = [
{ name: "a", value: 1 },
{ name: "b", value: 2 },
{ name: "c", value: 3 },
{ name: "d", value: 4 },
{ name: "e", value: 5 },
];
isBiggerObjInListThan(arr, 3);
// 결과값
// isBiggerObjInListThan 3 : true
const isAllObjBiggerInListThan = (list, compareValue) => {
console.log(`isAllObjBiggerThan ${compareValue} : ${list.every((item) => item.value > compareValue)}`);
};
const arr = [
{ name: "a", value: 1 },
{ name: "b", value: 2 },
{ name: "c", value: 3 },
{ name: "d", value: 4 },
{ name: "e", value: 5 },
];
isAllObjBiggerInListThan(arr, 3);
// 결과값
// isAllObjBiggerThan 3 : false
const isAllObjBiggerInListThan = (list, compareValue) => {
console.log(`isAllObjBiggerThan ${compareValue} : ${list.every((item) => item.value > compareValue)}`);
};
const arr = [
{ name: "a", value: 1 },
{ name: "b", value: 2 },
{ name: "c", value: 3 },
{ name: "d", value: 4 },
{ name: "e", value: 5 },
];
isAllObjBiggerInListThan(arr, 0);
// 결과값
//isAllObjBiggerThan 0 : true
포함여부는 보통 includes() 를 쓰는데 찾아보니 includes() 로 가릴 수 있는 자료형은 Boolean, null, undefined, Number, String 정도라고 한다. 문제는 Object 내의 값이거나 Object 값을 서로 비교할 때인데 이럴 때 some 과 every를 사용하는 게 좋다고 한다.
d7k.medium.com/js-includes-vs-some-b3cd546a7bc3
some 과 every 를 알기 전에는 미리 flag를 선언하고 for 문으로 돌려서 하나라도 걸릴 때 flag = true (혹은 false); break; 방식으로 쓰거나 filter, find로 뽑아서 Boolean 값을 가렸는데 이제는 some 이나 every를 쓰면 될 것 같다.
반응형
'Javascript' 카테고리의 다른 글
[Javascript] string 공백 지우기, Removing whitespace (0) | 2021.09.01 |
---|---|
[Javascript] Array.from(), Array.prototype.reduce() (feat. 프로그래머스 다리를 지나는 트럭) (0) | 2021.04.21 |
[Javascript] Optional Chaining ( ?.) (0) | 2021.04.07 |
[Javascript] Array 중복 제거 - Set 사용 (1) | 2021.03.31 |
[Javascript] if, if~else if~else, for, while, forEach (0) | 2021.03.31 |