我调用了github API,它给了我一个包含其提交的对象数组。我想循环遍历这个并获得一个唯一的commitor列表,并以以下格式构建它:
{"id":temp,"label":temp,"type": "number","p": {} }
所以我可以给它做图。
我写了以下内容:
$scope.git = response.data;
$scope.o=[];
angular.forEach($scope.git,function(value){
var temp = value.commit.author.name;
if($scope.o.length==0){
$scope.o.push({"id":temp,"label":temp,"type": "number",
"p": {}
})
}
else{
angular.forEach($scope.o,function(ob){
if(ob.id==temp){
continue;
}
else{
$scope.o.push({"id":temp,"label":temp,"type": "number",
"p": {}
})
}
});
}
})
这有效,但效率非常低。这样做的正确方法是什么?
答案 0 :(得分:1)
您可以使用对象检查作者是否已插入列表中。类似的东西:
$scope.o = [];
var authors = {};
angular.forEach($scope.git, function(value){
var temp = value.commit.author.name;
if (authors[temp] === undefined) {
$scope.o.push({"id":temp,"label":temp,"type": "number", "p": {} });
authors[temp] = true;
}
});
答案 1 :(得分:0)
你也可以使用像下划线或lodash.one这样的方法,这将是有用的方法__uniqBy.Here是相同的文档 https://lodash.com/docs/4.17.4#uniqBy