Array of objects 2개를 비교하려고 할때 이렇게 하면 된다..
난 삽질을 했군아
const products = [
{ulid: 1, price : 1000, name : "a" },
{ulid: 2, price : 2000, name : "b" },
{ulid: 3, price : 3000, name : "c" },
{ulid: 4, price : 4000, name : "d" }
]
const best = [
{ulid : 3 }
]
const result = products.filter(({ ulid: value }) =>
best.some(({ ulid: value2 }) => value === value2)
);
console.log(result);
//[{ ulid:3, price: 3000, name:"c"}]
를 천천히 보면
1. 우선 비교할 배열 products에서 filter를 적용한다.
2. 이때 하나씩 꺼내와서 볼 값은 ({ulid:value}) 자체이다.
3. 그리고 best 배열에서 .some()메소드를 적용한다.
4. some()메소드는 하나라도 통과한다면 true를 리턴해준다.
5. 그래서 best라는 배열에서 ulid:value2 라는 값을 냈을때
6. products.filter 에서 보내준 value와 value2가 같다면 true를 리턴해주고
7. filter에서 ulid :value가 true인것을 result로 리턴해주는것이다.
한줄 요약
products의 ulid:value와 best의 ulid:value를비교해 같으면 true이고
products의 ulid:value가 true인 product의 값을 리턴해주는것이다.
설명이 이상했나..?
잘 하시는 분 댓글로 설명해주세오 플 리 즈
이 stackoverflow를 보고 해결했다
Thank you :)
'Frontend > JavaScript' 카테고리의 다른 글
문자열로 구성된 배열을 숫자타입으로 변경하기 (0) | 2023.02.06 |
---|---|
charAt(), charCodeAt(), fromCharCode() (0) | 2023.02.06 |
setTimeout() vs setInterval() 을 비교해보자 (0) | 2023.02.02 |
프로토타입을 이해해보자 (0) | 2022.06.09 |
window.requestAnimationFrame() 너 누구 야 (0) | 2022.06.05 |