簡體   English   中英

嵌套循環 Javascript 濾波器 ES6

[英]Nested Loop Javascript Filter ES6

如何過濾此 jSon 中的嵌套數組,我需要過濾發布者 --> 雜志 ---> 啟用 True object 僅數據

原裝 JSON

{
  "slug": "test",
  "logo": "dd3d769a86d4c8a91dcbf05bf22e04eda7b73e04.png",
  "publishers": [
  {
    "name": "publisher 1",
    "magazines": [
    {
        "name": "name-1",
        "startDate": "2020-09-01T00:00:00+0000",
        "endDate": "2021-09-02T00:00:00+0000",
        "enabled": false,
    },
    {
        "name": "name- 2",
        "startDate": "2020-09-11T00:00:00+0000",
        "endDate": "2020-09-18T00:00:00+0000",
        "enabled": true,
    },
    
    {
        "name": "name- 2",
        "startDate": null,
        "endDate": null,
        "enabled": false,
        
    }]
},
{
    "name": "publisher 2",
    "magazines": [
    {
        "name": "name- 1",
        "startDate": null,
        "endDate": null,
        "enabled": true,
    }
    {
        "name": "name - 2",
        "startDate": null,
        "endDate": null,
        "enabled": false,
    }]
}],
"locale": "in",
}

OutPut Json

 {
    "slug": "test",
    "logo": "dd3d769a86d4c8a91dcbf05bf22e04eda7b73e04.png",
    "publishers": [
      {
         "name": "publisher 1",
         "magazines": [
          {
             "name": "name- 2",
             "startDate": "2020-09-11T00:00:00+0000",
             "endDate": "2020-09-18T00:00:00+0000",
             "enabled": true,
          },
         ]
      },
      {
         "name": "publisher 2",
         "magazines": [
        {
            "name": "name- 1",
            "startDate": null,
            "endDate": null,
            "enabled": true,
         }]
        }],
       "locale": "in"
    }

提前致謝

與任何其他數組相同:使用Array.filter

let origdata = {...}

for (let publisher of origdata.publishers) {
  publisher.magazines = publisher.magazines.filter(x => x.enabled === true);
}

使用 map 和過濾器:

const testObj = {yourObject...}

testObj.publishers.map(publisher => (publisher.magazines.filter(magazine => magazine.enabled === true)[0]))

密碼箱

這是您正確的 json

{
 "slug": "test",
 "logo": "dd3d769a86d4c8a91dcbf05bf22e04eda7b73e04.png",
  "publishers": [
 {
 "name": "publisher 1",
 "magazines": [
  {
    "name": "name-1",
    "startDate": "2020-09-01T00:00:00+0000",
    "endDate": "2021-09-02T00:00:00+0000",
    "enabled": false,
},
{
    "name": "name- 2",
    "startDate": "2020-09-11T00:00:00+0000",
    "endDate": "2020-09-18T00:00:00+0000",
    "enabled": true,
},

{
    "name": "name- 2",
    "startDate": null,
    "endDate": null,
    "enabled": false,
    
  }]
  },
 {
"name": "publisher 2",
"magazines": [
  {
    "name": "name- 1",
    "startDate": null,
    "endDate": null,
    "enabled": true,
},
{
    "name": "name - 2",
    "startDate": null,
    "endDate": null,
    "enabled": false,
}]
}],
"locale": "in",
}

並嘗試以下代碼:

 var testObj={your Json data...};
  for(i=0; i < testObj.publishers.length; i++){
        if(testObj.publishers[i].enabled == false){
            //console.log('exist');
            testObj.publishers.splice(i, 1);
        }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM