Lodash를 사용하여 중첩 배열에서 개체 제거

JaAnTr

다음 JSON 구조가 있습니다.

{
  "id": 123,
  "shops": [
    {
      "shopId": 456,
      "products": [
        {
          "productId": 10001,
          "name": "abc",
          "state": "active"
        },
        {
          "productId": 10002,
          "name": "def",
          "state": "expired"
        }
      ]
    },
    {
      "shopId": 789,
      "products": [
        {
          "productId": 20001,
          "name": "qrt",
          "state": "expired"
        },
        {
          "productId": 20002,
          "name": "jbf",
          "state": "active"
        }
      ]
    }
  ]
}

제품에 특정 속성이없는 각 상점에서 모든 제품을 제거하고 싶습니다.

평면 맵으로 은폐하면 잘 할 수 있지만 제거되지 않은 모든 제품이있는 배열이 있기 때문에 외부 개체를 잃게됩니다.

_(shopJson.shops).map('products').flatten().map(x => {if(x.state === 'active'){return x}}).compact().value()

다음을 시도했지만 빈 배열로 끝납니다.

_(shopJson.shops).map('products').filter(x => x.state === 'active').value()

나는 또한 사용하여 시도 _.reduce()하고 _.transform()있지만, 일에 그것을 얻을 수 없습니다

최종 JSON은 다음과 같아야합니다.

{
  "id": 123,
  "shops": [
    {
      "shopId": 456,
      "products": [
        {
          "productId": 10001,
          "name": "abc",
          "state": "active"
        }
      ]
    },
    {
      "shopId": 789,
      "products": [
        {
          "productId": 20002,
          "name": "jbf",
          "state": "active"
        }
      ]
    }
  ]
}
알베르토 트린 다데 타바레스

당신은 이것을 위해 정말로 lodash가 필요하지 않습니다. Array.prototype.mapArray.protype.filter(및 일부 spread syntax는 얕은 병합 객체 속성)을 사용할 수 있습니다 .

const data = {id:123,shops:[{shopId:456,products:[{productId:10001,name:"abc",state:"active"},{productId:10002,name:"def",state:"expired"}]},{shopId:789,products:[{productId:20001,name:"qrt",state:"expired"},{productId:20002,name:"jbf",state:"active"}]}]};

const result = {
  ...data,
  shops: data.shops.map((shop) => ({
    ...shop,
    products: shop.products.filter((product) => product.state === 'active'),
  })),
};

console.log(result);

편집 : 로 @Deykun는 지적 이 활성 제품이없는 상점을 무시하려는 경우, 당신은 사용하여 상점을 필터링 할 수 있습니다, Array.prototype.someA의 filter:

const data = {id:123,shops:[{shopId:456,products:[{productId:10001,name:"abc",state:"active"},{productId:10002,name:"def",state:"expired"}]},{shopId:789,products:[{productId:20001,name:"qrt",state:"expired"},{productId:20002,name:"jbf",state:"expired"}]}]};
    
const result = {
  ...data,
  shops: data.shops
    .filter((shop) => shop.products.some((product) => product.state === 'active'))
    .map((shop) => ({
      ...shop,
      products: shop.products.filter((product) => product.state === 'active')
  }))
};

console.log(result);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

lodash.js를 사용하여 객체 배열에서 중복 항목 제거

분류에서Dev

lodash를 사용하는 배열이있는 groupBy 중첩 개체

분류에서Dev

underscore.js _.omit를 사용하여 중첩 된 개체 제거

분류에서Dev

중첩 된 개체 구조를 개체 배열에서 공통 개체로 변경하고 이전 개체 배열 제거

분류에서Dev

자바 스크립트를 사용하여 중첩 된 개체에서 중복 값 제거

분류에서Dev

Angular : FormArray를 사용하여 개체 배열에 중첩 된 ngFor

분류에서Dev

lodash를 사용하여 중첩 배열 개체를 연결하여 새 배열을 생성하는 방법

분류에서Dev

밑줄 js 또는 lodash를 사용하여 배열에서 객체 제거

분류에서Dev

NGXS를 사용하여 Angular에서 중첩 된 데이터의 개체 삭제

분류에서Dev

중첩 JSON, angularjs를 사용하여 Jquery의 조건에 따라 객체 제거

분류에서Dev

개체에 중첩 된 배열에서 개체 제거

분류에서Dev

속성이 Null 인 배열에서 개체를 제거하는 방법-Lodash

분류에서Dev

배열에서 중첩 된 개체를 사용하여 개체를 만드는 방법

분류에서Dev

Javascript-중첩 된 개체 배열에서 개체 제거

분류에서Dev

_.differenceBy를 사용하여 한 개체 배열의 다른 개체 배열에서 항목을 제거합니다.

분류에서Dev

중첩 된 개체를 반복하고 Lodash를 사용하여 문자열에 연결

분류에서Dev

목록에서 중첩 된 개체를 찾고 제거하는 방법

분류에서Dev

C # 문자열 배열에서 중첩 된 개체를 사용하여 동적으로 JSON 만들기

분류에서Dev

JavaScript- 개체의 메서드를 사용하여 부모 배열에서 개체 제거

분류에서Dev

JavaScript- 개체의 메서드를 사용하여 부모 배열에서 개체 제거

분류에서Dev

Javascript / Lodash를 사용하여 Redux Store의 개체 배열에서 개체 교체

분류에서Dev

중첩 json 객체에서 빈 배열을 포함하는 객체를 재귀 적으로 제거합니다.

분류에서Dev

중첩 개체를 사용하는 JavaFX 중첩 열

분류에서Dev

개체에서 중첩 된 배열 제거

분류에서Dev

Redux를 사용하여 React에서 배열의 중첩 객체 업데이트

분류에서Dev

키-배열 쌍을 포함하는 개체를 사용하여 개체 중첩 개체 목록 필터링

분류에서Dev

MongoDB-배열에서 중첩 된 배열 요소를 제거하는 방법

분류에서Dev

$ pull (Mongoose)을 사용하여 사용자 모델의 배열에서 개체를 제거 할 수 없음

분류에서Dev

중첩 된 개체를 사용하여 개체 배열을 단일 개체로 결합

Related 관련 기사

  1. 1

    lodash.js를 사용하여 객체 배열에서 중복 항목 제거

  2. 2

    lodash를 사용하는 배열이있는 groupBy 중첩 개체

  3. 3

    underscore.js _.omit를 사용하여 중첩 된 개체 제거

  4. 4

    중첩 된 개체 구조를 개체 배열에서 공통 개체로 변경하고 이전 개체 배열 제거

  5. 5

    자바 스크립트를 사용하여 중첩 된 개체에서 중복 값 제거

  6. 6

    Angular : FormArray를 사용하여 개체 배열에 중첩 된 ngFor

  7. 7

    lodash를 사용하여 중첩 배열 개체를 연결하여 새 배열을 생성하는 방법

  8. 8

    밑줄 js 또는 lodash를 사용하여 배열에서 객체 제거

  9. 9

    NGXS를 사용하여 Angular에서 중첩 된 데이터의 개체 삭제

  10. 10

    중첩 JSON, angularjs를 사용하여 Jquery의 조건에 따라 객체 제거

  11. 11

    개체에 중첩 된 배열에서 개체 제거

  12. 12

    속성이 Null 인 배열에서 개체를 제거하는 방법-Lodash

  13. 13

    배열에서 중첩 된 개체를 사용하여 개체를 만드는 방법

  14. 14

    Javascript-중첩 된 개체 배열에서 개체 제거

  15. 15

    _.differenceBy를 사용하여 한 개체 배열의 다른 개체 배열에서 항목을 제거합니다.

  16. 16

    중첩 된 개체를 반복하고 Lodash를 사용하여 문자열에 연결

  17. 17

    목록에서 중첩 된 개체를 찾고 제거하는 방법

  18. 18

    C # 문자열 배열에서 중첩 된 개체를 사용하여 동적으로 JSON 만들기

  19. 19

    JavaScript- 개체의 메서드를 사용하여 부모 배열에서 개체 제거

  20. 20

    JavaScript- 개체의 메서드를 사용하여 부모 배열에서 개체 제거

  21. 21

    Javascript / Lodash를 사용하여 Redux Store의 개체 배열에서 개체 교체

  22. 22

    중첩 json 객체에서 빈 배열을 포함하는 객체를 재귀 적으로 제거합니다.

  23. 23

    중첩 개체를 사용하는 JavaFX 중첩 열

  24. 24

    개체에서 중첩 된 배열 제거

  25. 25

    Redux를 사용하여 React에서 배열의 중첩 객체 업데이트

  26. 26

    키-배열 쌍을 포함하는 개체를 사용하여 개체 중첩 개체 목록 필터링

  27. 27

    MongoDB-배열에서 중첩 된 배열 요소를 제거하는 방법

  28. 28

    $ pull (Mongoose)을 사용하여 사용자 모델의 배열에서 개체를 제거 할 수 없음

  29. 29

    중첩 된 개체를 사용하여 개체 배열을 단일 개체로 결합

뜨겁다태그

보관