我有一个场景,我有三个列表
1) $scope.edit.user
用户列表中的每个值都包含对象形式的“id”,“name”,“number” 。第二个清单是
2) $scope.edit.duplicateUser
此列表仅包含数组
形式的ids ex:[12,13,14]如果duplicateUser列表包含用户列表中存在的某些用户,那么我想从以下位置拼接该用户对象:
$scope.edit.user
并添加到第三个列表中:
$scope.edit.intersectedUsers = []
答案 0 :(得分:0)
我建议使用lodash进行列表/数组/集合操作:
答案 1 :(得分:0)
使用Lodash:
$scope.edit.intersectedUsers = _.remove($scope.edit.user,
function(u) { return _.indexOf($scope.edit.duplicateUser, u.Id) > -1; });
如果对$ scope.edit.duplicateUser进行了排序,则可以通过将true
添加到_.indexOf()
来进行二进制搜索来提升性能。
$scope.edit.intersectedUsers = _.remove($scope.edit.user,
function(u) { return _.indexOf($scope.edit.duplicateUser, u.Id, true) > -1; });
答案 2 :(得分:0)
你在谈论客户端的集合操作,你应该使用下划线\ lodash。
$scope.edit.intersectedUsers = _.find($scope.edit.user, function(user){
if (_.contains($scope.edit.duplicateUser, user.id){
return user;
}
}); //intersectedUsers will contain only the users with id from duplicateUser
$scope.edit.user = _.difference([$scope.edit.user, $scope.edit.intersectedUsers);
//User list will be modified to itself without the duplicated users
安装说明以及有关underscore here
的更多信息安装说明以及有关lodash here
的更多信息