Javascript

[Javascript] Array.prototype.some(), Array.prototype.every()

binaryJournalist 2021. 3. 31. 16:02
반응형

 

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

 

JS .includes() vs .some()

JavaScript array is a powerful data structure in web technologies. Methods such as .map(), .filter(), .includes(),and .reduce() helps a…

d7k.medium.com

 

 

some 과 every 를 알기 전에는 미리 flag를 선언하고 for 문으로 돌려서 하나라도 걸릴 때 flag = true (혹은 false); break; 방식으로 쓰거나 filter, find로 뽑아서 Boolean 값을 가렸는데 이제는 some 이나 every를 쓰면 될 것 같다.

 

 

 

반응형