根据列入白名单的ID数组筛选响应对象

时间:2014-08-15 11:06:25

标签: javascript angularjs performance refactoring

如何根据列入白名单的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);
            }
        });
    });

}

这是一个可以玩的JSFiddle:http://jsfiddle.net/gearsdigital/rv6vq2L7/

1 个答案:

答案 0 :(得分:2)

我对Anglar ForEeach不是很熟悉,但你可以使用本地javascript filter来实现这一点,如下所述

visible = response.filter(function(item){
    return (whitelist.indexOf(item.id) > -1);
})

DEMO

NOT: - IE8不支持.filter