Lodash: Find and add an item in a multi-level Json based on a conditions

柔情痞子 提交于 2020-01-17 17:15:37

问题


I am trying to add an item to "roles array" based on a condition.

My 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"}}

Expected result: After adding the newRole to the roles array.

[{
    "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"
      }
    }]
  }
]

Here for unitId: 2, I am trying to add a newRole to the "roles array". I tried lodash's filter and push, but it didn't work.


回答1:


If I understand correctly, you are trying to add a new role based on the "unitId". Hope this helps.

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);


来源:https://stackoverflow.com/questions/52937484/lodash-find-and-add-an-item-in-a-multi-level-json-based-on-a-conditions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!