使用 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>
我想使用 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>