Javascript Angularjs过滤控制器内的作用域以创建新的作用域

Javascript Angularjs过滤控制器内的作用域以创建新的作用域,javascript,angularjs,Javascript,Angularjs,我有一个范围变量,如下所示: $scope.people = [ {'id':'1' ,'name':'John','category':'m'}, {'id':'2', 'name':'Jack','category':'m'}, {'id':'3','name':'Mark','category':'m'}, {'id':'4','name':'Ernie','category':'m'}, {'id':'5','name':'J

我有一个范围变量,如下所示:

 $scope.people = [
      {'id':'1' ,'name':'John','category':'m'},
      {'id':'2', 'name':'Jack','category':'m'},
      {'id':'3','name':'Mark','category':'m'},
      {'id':'4','name':'Ernie','category':'m'},
      {'id':'5','name':'Jane','category':'w'},
      {'id':'6','name':'Jill','category':'w'},
      {'id':'7','name':'Betty','category':'w'},
      {'id':'8','name':'Mary','category':'w'}
      ];
这是我为解决这个问题而创建的一个示例范围变量。但我将从一个服务获取这些数据。我想实现的是,如何将这个范围变量过滤到控制器中的不同变量中

例如,我想从给定的作用域创建2个新作用域,如下所示:

$scope.men = [
          {'id':'1' ,'name':'John','category':'m'},
          {'id':'2', 'name':'Jack','category':'m'},
          {'id':'3','name':'Mark','category':'m'},
          {'id':'4','name':'Ernie','category':'m'}
          ];

$scope.women = [
          {'id':'5','name':'Jane','category':'w'},
          {'id':'6','name':'Jill','category':'w'},
          {'id':'7','name':'Betty','category':'w'},
          {'id':'8','name':'Mary','category':'w'}
          ];

我如何做到这一点?任何知识都将非常有用

您需要使用一些javascript库,如underline.js

例如

  _.groupBy($scope.people, function(v){ return v.category == 'm' });
不确定源代码

您可以使用:

对于较旧的浏览器,您需要使用polyfill过滤器


或者,您也可以使用下划线的函数。

hi…它工作得很好。你能告诉我是否有类似的方法连接2个作用域变量吗?作用域属性只是javascript类型,因此你可以使用concat连接数组。
function isMan(person){
    return person.category == 'm';
}

function isWoman(person){
    return person.category == 'w';
}

$scope.men = $scope.people.filter(isMan);
$scope.women = $scope.people.filter(isWoman);