我正在编写一个小型 Angular 应用程序,它使用 Underscore 来查看数组中的每个对象,如果该对象与关键字(用户输入)不匹配,则删除该对象。
$scope.search = function() {
$scope.posts = _.reject($scope.posts, function(p) {
var i = 0;
if ($scope.keywords.indexOf(p.author) < 0 ) {
i++;
}
if ($scope.keywords.indexOf(p.id) < 0 ) {
i++;
}
if(i > 0) {
return true;
}
});
};
正如您所看到的,我正在设置一个计数器,然后如果在索引中找到关键字则添加到计数器,然后最后检查计数器以返回 true 或 false 以从数组中删除对象。 $scope.posts
是包含我的数据的对象数组,$scope.keywords
是用户输入。我想查找来自 $scope.posts.author
对象和 $scope.posts.id
对象的输入。
如果我删除其中一个 if
语句,该函数将按预期执行:所有与关键字不匹配的内容都会从数组中删除。但是,一旦我向函数添加另一个 if
语句(如上面的示例所示),所有对象都会从数组中删除。
最佳答案
在我看来,filter
可能更适合这里:
$scope.posts = _.filter($scope.posts, function(p) {
return $scope.keywords.indexOf(p.author) > -1 || $scope.keywords.indexOf(p.id) > -1;
});
关于javascript - 带 IndexOf 的下划线拒绝函数从数组中删除所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484850/