如何在AngularJS中优化过滤?

时间:2017-07-07 09:10:14

标签: angularjs

我这里有一个AngularJS过滤器。有没有更好的方法呢?

 return function (data, selected) {
        var result = [];
        if (selected[0] == 'All Types') {
            result = data;
        }
        else {
            for (var i = 0; i < data.length; i++) {
                for (var j = 0; j < selected.length; j++) {
                    if (data[i].Type == selected[j]) {
                        result.push(data[i]);
                    }
                }
            }
        }

        return result;
    };

3 个答案:

答案 0 :(得分:0)

return function (data, selected) {
        var result = [];
        if (selected[0] == 'All Types') {
            result = data;
        }
        else {
           result=data.filter(x=>selected.indexOf(x.Type)>-1);
        }

        return result;
    };

答案 1 :(得分:0)

使用所选值的数据。我假设选择的值在data [i] .selected。

position

我们可以使用过滤器

return function (data) {
    var result = [];
    if (data[0].selected == 'All Types') {
        result = data;
    }
    else {
        for (var i = 0; i < data.length; i++) {
            if (data[i].Type == data[i].selected) {
                result.push(data[i]);                    
            }
        }
    }
    return result;
};

答案 2 :(得分:0)

显然这是使用lodash,但可以替换原生方法:

return (data, selected) => {
  return 
    _.first(selected) === 'All Types' ? data :
    _.reduce(data, (sum, value, key) => {
      if (_.includes(selected, value.Type)) {
        sum.push(value);
      }
      return sum;
    }, []);
}