我有一个函数displaySelectedRole()
,我有变量$scope.Role
和$scope.rolenames
。我需要从$scope.role
$scope.role= ["A","B","C"];
$scope.rolename =["A","B","C","D","E"]
我需要拼接值并获取$scope.rolename = ["D","E"]
$scope.displaySelectedRole = function(role, index) {
debugger;
$scope.role.splice(RoleNames[index]);
console.log($scope.role);
我尝试使用基于索引的splice,但问题是它在控制台中给出了空数组值。
答案 0 :(得分:1)
您可以使用filter
var $scope = {}; // Ignore this line
$scope.role= ["A","B","C"];
$scope.rolename = ["A","B","C","D","E"];
$scope.rolename = $scope.rolename.filter(function(role){
return $scope.role.indexOf(role) === -1;
})
console.log($scope.rolename);
如果你想直接删除它们,你可以遍历$scope.role
并使用splice
var $scope = {}; // Ignore this line
$scope.role= ["A","B","C"];
$scope.rolename = ["A","B","C","D","E"];
$scope.role.forEach(function(role){
var index = $scope.rolename.indexOf(role);
if(index !== -1) $scope.rolename.splice(index, 1);
})
console.log($scope.rolename);
注意: Array.filter
将返回一个新数组,与array.splice
不同,它会修改原始数组。
答案 1 :(得分:0)
你可以Underscore.js's difference()
,它是一种减去数组的方法:
$scope.role = ["A","B","C"];
$scope.rolename = ["A","B","C","D","E"];
$scope.diff = _.difference($scope.rolename, $scope.role); // ["D","E"]