我有这个数组
$scope.userEventData.selectedFlats
和另一个数组$scope.flatsArray
我想从$scope.userEventData.selectedFlats
中删除$scope.flatsArray
中存在的值。
我已经做到了:
$scope.userEventData.selectedFlats = $scope.userEventData.selectedFlats.filter(function(f){
return !$scope.someObj.flatsArray.some(function(v){
return v.indexOf(f) >= 0;
})
})
但是我收到一条错误消息,说v.indexOf不是函数
答案 0 :(得分:1)
v
回调函数中的flatsArray.some
返回单个项目,而不是项目数组。因此,您不必检查索引,而可以直接比较这些值。
您需要
$scope.userEventData.selectedFlats = $scope.userEventData.selectedFlats.filter(function(f){
return !$scope.someObj.flatsArray.some(function(v){
return v == f;
})
})
答案 1 :(得分:0)
选择some
或indexOf
。例如
$scope.userEventData.selectedFlats = $scope.userEventData.selectedFlats.filter(function(f){
return $scope.someObj.flatsArray.indexOf(f) === -1
})
或
$scope.userEventData.selectedFlats = $scope.userEventData.selectedFlats.filter(function(f){
return !$scope.someObj.flatsArray.some(function(item) { return item === f; })
})
答案 2 :(得分:0)
发布数组可能会有所帮助,以便可以在答案中使用它们,但是,您可以这样做。
for (var i = 0; i < $scope.userEventData.selectedFlats; i++) {
var index = $scope.flatsArray.indexOf($scope.userEventData.selectedFlats[i]);
if ( index > -1 ) {
$scope.userEventData.selectedFlats.splice(index, 1);
}
}
这将循环遍历 selectFlats 数组中的每个项目,并在 flatsArray 中找到该项目的索引,然后从该项目中删除该项目。
答案 3 :(得分:0)
尝试一下:
$scope.userEventData.selectedFlats = $scope.userEventData.selectedFlats.filter(
function(item) {
return !($scope.someObj.flatsArray.contains(item))
}