Bis*_*opZ 1 javascript underscore.js
所以我想用一个更好的方法用下划线来做到这一点:
state.attributes = _.reduce(list, function(memo, item){
memo['neighborhood'] = (memo['neighborhood'] || []);
var isNew = true;
_.each(memo['neighborhood'], function(hood){
if (hood.name === item.data.neighborhood) {
hood.count++; isNew=false;
}
});
if(isNew){
memo['neighborhood'].push({name:item.data.neighborhood, count:1});
}
return memo;
});
Run Code Online (Sandbox Code Playgroud)
我想将列表的各种名称组合成一个唯一名称列表,其中包含每个唯一名称出现次数的计数.看起来完全是下划线设计要解决的问题,但我能想到的最佳解决方案似乎不那么优雅.
我不是一个underscore.js用户,但我认为_.groupBy()适合这种情况:
var attributes = _.groupBy(list, function (item) {
return item.data.neighborhood
})
Run Code Online (Sandbox Code Playgroud)
它不会以您想要的方式返回数组,但它包含您需要的所有信息.因此,您在attributes["foo"]所有具有"foo"作为neighborhoodvalue属性的项目中,因此在attributes["foo"].length它们的计数中.