简体   繁体   English

嵌套循环 Javascript 滤波器 ES6

[英]Nested Loop Javascript Filter ES6

How to filter nested array in this jSon, I need to filter publisher --> magazines ---> enabled True object Data only如何过滤此 jSon 中的嵌套数组,我需要过滤发布者 --> 杂志 ---> 启用 True object 仅数据

original JSON原装 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 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"
    }

Thanks in advance提前致谢

Same as any other array: With Array.filter与任何其他数组相同:使用Array.filter

let origdata = {...}

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

with map and filter:使用 map 和过滤器:

const testObj = {yourObject...}

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

codesandbox 密码箱

This is your correct json这是您正确的 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",
}

and try this code:并尝试以下代码:

 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