使用 lodash 从数组中删除数组中的元素

Remove elements in array from array using lodash

我想使用 lodash 根据 removeUser 数组中的 userName 值删除 removeUser 数组中的用户。这是我的输入数据:

{"users":[
{"title":"Mr", "firstName":"John", "lastName":"Doe", "email":"jdoe@google.com", "userName" : "jdoe", "groups": [{"name": "Manager"}]},
{"title":"Ms", "firstName":"Anna", "lastName":"Smith","email":"asmith@google.com", "userName" : "asmith", "groups": [{"name": "Administrator"}, {"name": "Manager"}]},
{"title":"Mr", "firstName":"Peter", "lastName":"Jones", "email":"pjones@google.com", "userName" : "pjones", "groups": [{"name": "Administrator"}, {"name": "Manager"}]},
{"title":"Ms", "firstName":"Jenny", "lastName":"Otter","email":"jotter@google.com", "userName" : "jotter", "groups": [{"name": "Administrator"}, {"name": "Manager"}]}
]}

var removeUser = ['jdoe', 'asmith'];  //usernames of users to be removed

这就是我所拥有的,但我需要一个 foreach 循环:

_remove(users, { userName: [removeUser]})

所以我最终得到一个更新的 users 数组:

{"users":[
{"title":"Mr", "firstName":"Peter", "lastName":"Jones", "email":"pjones@google.com", "userName" : "pjones", "groups": [{"name": "Administrator"}, {"name": "Manager"}]},
{"title":"Ms", "firstName":"Jenny", "lastName":"Otter","email":"jotter@google.com", "userName" : "jotter", "groups": [{"name": "Administrator"}, {"name": "Manager"}]}
]}

您可以使用 callback as second argument,像这样

var data = {"users": [
  {"title":"Mr", "firstName":"John", "lastName":"Doe", "email":"jdoe@google.com", "userName" : "jdoe", "groups": [{"name": "Manager"}]},
  {"title":"Ms", "firstName":"Anna", "lastName":"Smith","email":"asmith@google.com", "userName" : "asmith", "groups": [{"name": "Administrator"}, {"name": "Manager"}]},
  {"title":"Mr", "firstName":"Peter", "lastName":"Jones", "email":"pjones@google.com", "userName" : "pjones", "groups": [{"name": "Administrator"}, {"name": "Manager"}]},
  {"title":"Ms", "firstName":"Jenny", "lastName":"Otter","email":"jotter@google.com", "userName" : "jotter", "groups": [{"name": "Administrator"}, {"name": "Manager"}]}
]};

var removeUser = ['jdoe', 'asmith']; 

_.remove(data.users, function(el) {
  // if el.userName exists in removeUser return true and remove it from data.users
  return removeUser.indexOf(el.userName) >= 0;
});

console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.9.0/lodash.js"></script>