가츠동
509
2019-05-21 13:14:45
3
449

리액트 질문입니다.


let a = [{best:"12"....},{best:"34"....},{best:"56"....}];

let b = [{best:"12"....},{best:"78"....},{best:"90"....}];

이 두개 배열을 filter로 통해서 best 12가 제외된 b 객체를 가지고 싶어요


let list2 = a.filter((info:any) => {
return (b.indexOf(info.best) == -1) ? true : false;
});
console.log(list2);

이렇게하면 a 객체는 {...} 하나씩 꺼내서 특정값을 비교하겠지만

b는 [{...},{...},{...}]  이렇게 비교하게되니.... b[0] 이렇게 할수도 없고.... 방법 부탁드릴께요 ㅜㅜ 

그냥 자바면 이중포문해서 지역변수에 넣으면 될텐데.... 자바스크립트는 어렵네요 ㅜㅜ





0
  • 답변 3

  • moonti
    4k
    2019-05-21 13:37:00

    b배열에서 a에 포함된 데이터를 제외하는 함수지요??


    let a = [{best:"12"},{best:"34"},{best:"56"}];
    
    let b = [{best:"12"},{best:"78"},{best:"90"}];
    
    const filters = a.map(item => item.best);
    b.filter(item => !filters.includes(item.best))


  • 가츠동
    509
    2019-05-21 16:48:01

    이중 포문을 써야하나 별고민 많이 했는데. includes 라니!! 

    답변 너무 감사드려요... 귀찮은 질문이셨을텐ㄷ.... 감사드립니다 ㅎㅎ

  • 푸르게
    679
    2019-06-08 15:54:53

    lodash 이용

    import _ from 'lodash'
    
    let a = [{best:"12"},{best:"34"},{best:"56"}];
    let b = [{best:"12"},{best:"78"},{best:"90"}];
    
    function not(a, b) {
       return a.filter(value => _.findIndex(b, {best: value.best}) === -1)
    }
    
    const res = not(b, a)
    console.log(res)


  • 로그인을 하시면 답변을 등록할 수 있습니다.