【问题标题】:How to Filter Nested Array Object?如何过滤嵌套数组对象?
【发布时间】:2019-07-06 04:54:42
【问题描述】:

所以我尝试从 2 个数组对象中对数据进行排序,

我曾尝试使用 Loadash 来匹配两者之间的相同 ID,但我想要的结果仍然为空

Array A

    {
      "account": {
        "_id": "5d1efe79dedfe54a984f27f7",
        "status": "not verified",
        "email": "garp@garp.com",
        "name": "garp",
        "phone": "12345",
        "business_id": [
          {
            "role_capability": "all_access",
            "current_active": true,
            "_id": "5d1efe89dedfe54a984f27f9",
            "date_created": "1562309081438",
            "name": "balsem",
            "status": "no verify",
            "desc": "perusahaan balsem untuk nyeri otot"
          },
          {
            "role_capability": "all_access",
            "current_active": false,
            "_id": "5d1efe9adedfe54a984f27fb",
            "date_created": "1562309081438",
            "name": "pulpen",
            "status": "no verify",
            "desc": "pulpen adalah alat untuk nulis"
          },
          {
            "role_capability": "all_access",
            "current_active": false,
            "_id": "5d1efeacdedfe54a984f27fd",
            "date_created": "1562309081438",
            "name": "kaca mobil",
            "status": "no verify",
            "desc": "perusahaan yang bergerak di bidang kaca mobil"
          }
        ]
      }
    }

数组B

    [
      {
        "_id": "5d1eebb0e3864b452044590a",
        "address": "",
        "status": "no verify",
        "email": "qwe@qwe.com",
        "name": "qwe",
        "phone": "2123123",
        "business_id": [
          {
            "_id": "5d1eebbde3864b452044590c",
            "role_capability": "all_access"
          },
          {
            "_id": "5d1ef967dedfe54a984f27ee",
            "role_capability": "all_access"
          }
        ]
      },
      {
        "_id": "5d1efe20dedfe54a984f27f1",
        "address": "",
        "status": "not verified",
        "email": "bart@bart.com",
        "name": "Bartolomew",
        "phone": "12344",
        "business_id": [
          {
            "_id": "5d1efe4fdedfe54a984f27f3",
            "role_capability": "all_access"
          },
          {
            "_id": "5d1efe5ddedfe54a984f27f5",
            "role_capability": "all_access"
          }
        ]
      },
      {
        "_id": "5d1efe79dedfe54a984f27f7",
        "address": "",
        "status": "not verified",
        "email": "garp@garp.com",
        "name": "garp",
        "phone": "12345",
        "business_id": [
          {
            "_id": "5d1efe89dedfe54a984f27f9",
            "role_capability": "all_access"
          },
          {
            "_id": "5d1efe9adedfe54a984f27fb",
            "role_capability": "all_access"
          },
          {
            "_id": "5d1efeacdedfe54a984f27fd",
            "role_capability": "all_access"
          }
        ]
      },
      {
        "_id": "5d1efecededfe54a984f27ff",
        "address": "",
        "status": "not verified",
        "email": "kizaru@kizaru.com",
        "name": "kizaru",
        "phone": "12345",
        "business_id": [
          {
            "_id": "5d1efedededfe54a984f2801",
            "role_capability": "all_access"
          },
          {
            "_id": "5d1efef6dedfe54a984f2803",
            "role_capability": "all_access"
          }
        ]
      }
    ]

这是我的使用方法

    let respFilter
    //first I sort the current_active data which is true
    const busActive = _.filter(cookieActive, function(o) {return  o.current_active === true; });

    //Response data from axios / Array B
    _.forEach(response.data, data => {
    // Then i looping Array B to get an _id and filter with Array A
    respFilter = _.filter(data, response.data[data] === busActive[0]._id)
    })
    //But i still get empty data
    console.log('respoFIlt', respFilter)

result that i want:

    {
        "_id": "5d1efe79dedfe54a984f27f7",
        "address": "",
        "status": "not verified",
        "email": "garp@garp.com",
        "name": "garp",
        "phone": "12345",
        "business_id": [
          {
            "_id": "5d1efe89dedfe54a984f27f9",
            "role_capability": "all_access"
          },
          {
            "_id": "5d1efe9adedfe54a984f27fb",
            "role_capability": "all_access"
          },
          {
            "_id": "5d1efeacdedfe54a984f27fd",
            "role_capability": "all_access"
          }
        ]
      },

我该如何证明这一点?以及我上面的步骤有什么问题。对不起,如果有一个词错了,我用谷歌翻译这个

提前谢谢你

【问题讨论】:

    标签: javascript arrays object axios lodash


    【解决方案1】:

    只需find 第二个数组中具有正确_id 的项目:

    const obj = {"account":{"_id":"5d1efe79dedfe54a984f27f7","status":"not verified","email":"garp@garp.com","name":"garp","phone":"12345","business_id":[{"role_capability":"all_access","current_active":true,"_id":"5d1efe89dedfe54a984f27f9","date_created":"1562309081438","name":"balsem","status":"no verify","desc":"perusahaan balsem untuk nyeri otot"},{"role_capability":"all_access","current_active":false,"_id":"5d1efe9adedfe54a984f27fb","date_created":"1562309081438","name":"pulpen","status":"no verify","desc":"pulpen adalah alat untuk nulis"},{"role_capability":"all_access","current_active":false,"_id":"5d1efeacdedfe54a984f27fd","date_created":"1562309081438","name":"kaca mobil","status":"no verify","desc":"perusahaan yang bergerak di bidang kaca mobil"}]}};
    const arr = [{"_id":"5d1eebb0e3864b452044590a","address":"","status":"no verify","email":"qwe@qwe.com","name":"qwe","phone":"2123123","business_id":[{"_id":"5d1eebbde3864b452044590c","role_capability":"all_access"},{"_id":"5d1ef967dedfe54a984f27ee","role_capability":"all_access"}]},{"_id":"5d1efe20dedfe54a984f27f1","address":"","status":"not verified","email":"bart@bart.com","name":"Bartolomew","phone":"12344","business_id":[{"_id":"5d1efe4fdedfe54a984f27f3","role_capability":"all_access"},{"_id":"5d1efe5ddedfe54a984f27f5","role_capability":"all_access"}]},{"_id":"5d1efe79dedfe54a984f27f7","address":"","status":"not verified","email":"garp@garp.com","name":"garp","phone":"12345","business_id":[{"_id":"5d1efe89dedfe54a984f27f9","role_capability":"all_access"},{"_id":"5d1efe9adedfe54a984f27fb","role_capability":"all_access"},{"_id":"5d1efeacdedfe54a984f27fd","role_capability":"all_access"}]},{"_id":"5d1efecededfe54a984f27ff","address":"","status":"not verified","email":"kizaru@kizaru.com","name":"kizaru","phone":"12345","business_id":[{"_id":"5d1efedededfe54a984f2801","role_capability":"all_access"},{"_id":"5d1efef6dedfe54a984f2803","role_capability":"all_access"}]}];
    
    const res = arr.find(({ _id }) => _id == obj.account._id);
    
    console.log(res);
    .as-console-wrapper { max-height: 100% !important; top: auto; }

    【讨论】:

    • 这是我正在寻找的答案。谢谢,但是如果我有 2 个数组如何比较它们呢?
    猜你喜欢
    • 1970-01-01
    • 2020-03-11
    • 2020-07-18
    • 1970-01-01
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 2018-04-27
    相关资源
    最近更新 更多