根据列入白名单的 id 数组过滤响应对象

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/

Mri*_*jay 5

我不太熟悉,Anglar ForEeach但你可以使用filter像波纹管这样的原生 javascript 来实现这一点

visible = response.filter(function(item){
    return (whitelist.indexOf(item.id) > -1);
})
Run Code Online (Sandbox Code Playgroud)

演示

注意:- IE8 不支持.filter.