我正在尝试将具有两个可能值的组合在一起。小提示帮助http://jsfiddle.net/gJPHw/276/。
这有效:
$scope.newGroup = _.groupBy($scope.data, {rankNum: '6H'});
但我想要的是:
$scope.newGroup = _.groupBy($scope.data, {rankNum: '6H' || '6Y'});
这可能吗?关于它的文档对我来说没有意义 - http://underscorejs.org/#groupBy
或者你可以通过6. substring(0,1)===' 6'
的子串来实现甚至是下面的内容。它返回对象对象时不起作用。
$scope.newGroupH = _.groupBy($scope.data, {rankNum: '6H'});
$scope.newGroupY = _.groupBy($scope.data, {rankNum: '6Y'});
$scope.newGroupHY = $scope.newGroupH + $scope.newGroupy;
答案 0 :(得分:2)
这听起来非常适合_.partition。它将一个数组分成两部分;一个数组包含满足谓词的所有项目,另一个数组包含所有不满足的内容。
var groups = _.partition(arr, function(item){
return item.rankNum == '6H' || item.rankNum == '6Y';
})
这导致group [0]包含rankNum为6H或6Y的所有项目,以及包含所有其余项目的group [1]。
答案 1 :(得分:0)
是的,你可以在某种程度上做到这一点。但是你需要使用函数而不是对象。
$scope.newGroup = _.groupBy($scope.data, function (d) {
return d.rankNum.substring(0,1);
});
这将按rankNum
的第一个字母分组。如果你输入一个像rankNum === '6H'
这样的布尔检查,它会返回一个true
数组和一个false
数组,因为那是你要返回的。我不确定如何用两个值进行特定分组,除非你进行布尔检查,然后对返回的true
数组做一些事情。
如果您只是在寻找这两个值,那么_.filter
会更好。