Frontend/JavaScript

javaScript에서 object로 구성된 배열을 비교할때

섕걍 2023. 2. 4. 19:09

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 :)

https://stackoverflow.com/questions/21987909/how-to-get-the-difference-between-two-arrays-of-objects-in-javascript

 

How to get the difference between two arrays of objects in JavaScript

I have two result sets like this: // Result 1 [ { value: "0", display: "Jamsheer" }, { value: "1", display: "Muhammed" }, { value: "2", display: "Ravi" }, { value: "3", display: "A...

stackoverflow.com