Javascript 使用过滤器进行更新?

Javascript 使用过滤器进行更新?,javascript,angularjs,Javascript,Angularjs,我想使用$filter或其他智能方式更新我的模型,而不必对每个执行多个。 因此,我的模型基本上与以下类似: $scope.projects = [ { tasks: [ { name: 'task name', visible: true, starred: true } ], createdAt: 'something' }, { tasks: [ {

我想使用
$filter
或其他智能方式更新我的模型,而不必对每个
执行多个
。
因此,我的模型基本上与以下类似:

$scope.projects = [
  {
    tasks: [
      {
        name: 'task name',
        visible: true,
        starred: true
      }
    ],
    createdAt: 'something'
  },
  {
    tasks: [
      {
        name: 'second task name',
        visible: true,
        starred: false
      }
    ],
    createdAt: 'something'
  }
]
我想做的是使用
$filter
或其他类似
下划线
等方式来更新变量的内容。例如,当我单击一个按钮时,我只想将
visible=true
设置为带星号的任务

有人对如何实现这一目标有什么建议吗?有没有可能,或者我需要做几个循环

比如:

$filter('filter')($scope.projects,{{{starred=true})。tasks.visible=true

更新

在@jbrown的帮助下,我实现了我想要的。 为了防止有人需要类似的方法,最终的解决方案如下所示:

_.forEach($scope.projectsModel.projects, function(proj){
    _.forEach(_.filter(proj.tasks, {starred: true}), function(task){
        task.visible = true;
    });
});

使用下划线,您可以使用过滤器和查找的组合来获得您要查找的结果

  $scope.filteredProjects = _.filter($scope.projects, function(proj) {
                                return _.find(proj.tasks, { 
                                    visible: true, starred: true });
                             });

嗨,杰布朗!你的答案95%正是我需要的!:)我现在需要的是基于此筛选器设置值。。我需要在这个过滤器上,我将可见设置为真,其中星号为真。。下划线中是否有某种方法可以设置
而不是查找?啊!在你的帮助下,我成功了。。我认为你的答案是正确的,可以启发你如何去做。。我会发布我的解决方案,以防万一有人也需要它。。