javascript - 带 IndexOf 的下划线拒绝函数从数组中删除所有对象

标签 javascript angularjs underscore.js

我正在编写一个小型 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;
});

工作示例:http://jsfiddle.net/4xp3sm10/

关于javascript - 带 IndexOf 的下划线拒绝函数从数组中删除所有对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484850/

相关文章:

javascript - 加载时自动检查三个单选按钮

javascript - 使用 Javascript 从 HTML id 获取号码

angularjs - 如何指定悬停颜色 angular-chart.js

javascript - 使用原始 JavaScript 或 underscore.js 根据 bool 值删除或过滤对象

jquery - Backbone模板渲染后如何调用jQuery代码?

javascript - 监控 {{values}} 上的更改以触发 DOM 指令操作时出现问题

javascript - Angular 4抛出无法与URL中的XSS脚本匹配任何路由错误

javascript - Angular uislider 禁用

javascript - 如何从内容页Angular JS(Ionic Framework)调用函数?

javascript - 按值对映射/哈希进行排序,保留键