gea*_*tal 1 javascript performance refactoring angularjs
如何根据列入白名单的 id 数组过滤响应对象?
我有一个工作版本,但我不喜欢forEach
这里的嵌套,我想知道是否有办法改进它?!
function WhitelistCtrl($scope) {
var visible = [];
var whitelist = [123, 456]; // items to be visible
var response = [{
id: 123,
name: 'my object #1'
}, {
id: 456,
name: 'my object #2'
}, {
id: 789,
name: 'my object #3'
}];
angular.forEach(whitelist, function (id) {
angular.forEach(response, function (item) {
if (id === item.id) {
visible.push(item);
}
});
});
}
Run Code Online (Sandbox Code Playgroud)
这是一个可以玩的 JSFiddle:http : //jsfiddle.net/gearsdigital/rv6vq2L7/
我不太熟悉,Anglar ForEeach
但你可以使用filter
像波纹管这样的原生 javascript 来实现这一点
visible = response.filter(function(item){
return (whitelist.indexOf(item.id) > -1);
})
Run Code Online (Sandbox Code Playgroud)
注意:- IE8 不支持.filter
.