【问题标题】:Lodash: Find and add an item in a multi-level Json based on a conditionsLodash:根据条件在多级Json中查找并添加项目
【发布时间】:2018-10-22 20:42:00
【问题描述】:

我正在尝试根据条件将项目添加到“角色数组”。

我的json:

[{
    "unitId": "2",
    name: "elizabeth",
    roles: [{
      "role": {
        "roleId": "2",
        roleName: "testing"
      }
    }, {
      "role": {
        "roleId": "5",
        roleName: "dev"
      }
    }]
  },
  {
    "unitId": "3",
    name: "peter",
    roles: [{
      "role": {
        "roleId": "1",
        roleName: "testing"
      }
    }, {
      "role": {
        "roleId": "2",
        roleName: "dev"
      }
    }]
  }
]

let newRole = { "role":{"roleId" : "6", roleName: "BA"}}

预期结果:将 newRole 添加到角色数组后。

[{
    "unitId": "2",
    name: "elizabeth",
    roles: [{
      "role": {
        "roleId": "2",
        roleName: "testing"
      }
    }, {
      "role": {
        "roleId": "5",
        roleName: "dev"
      }
    }, {
      "role": {
        "roleId": "6",
        roleName: "BA"
      }
    }]
  },
  {
    "unitId": "3",
    name: "peter",
    roles: [{
      "role": {
        "roleId": "1",
        roleName: "testing"
      }
    }, {
      "role": {
        "roleId": "2",
        roleName: "dev"
      }
    }]
  }
]

这里对于unitId: 2,我正在尝试向“角色数组”添加一个新角色。试过lodash的filter和push,还是不行。

【问题讨论】:

  • 数组中的两个项目都有“2”作为“unitId”。似乎您需要另一个条件,因为它们具有相同的值。
  • 更新了问题。只有第一项具有 unitId:2。

标签: ecmascript-6 lodash


【解决方案1】:

如果我理解正确,您正在尝试添加基于“unitId”的新角色。希望这会有所帮助。

const a = [{
    "unitId": "2",
    name: "elizabeth",
    roles: [{"role": {"roleId": "2", roleName: "testing"}}, {"role": {"roleId": "5", roleName: "dev"}}]
}, {
    "unitId": "3",
    name: "peter",
    roles: [{"role": {"roleId": "1", roleName: "testing"}}, {"role": {"roleId": "2", roleName: "dev"}}]
}];

const newRole = { "role":{"roleId" : "6", roleName: "BA"}};

const insert = (arr, id, newRole) => {

    const whereToPush = arr.find((item) => item.unitId === id);

    if (whereToPush) whereToPush.roles.push(newRole);
};

insert(a, '2', newRole);

console.log(a);

【讨论】:

    猜你喜欢
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2019-03-06
    • 2021-10-07
    • 1970-01-01
    相关资源
    最近更新 更多