使用lodash选择元素,其中内部属性与数组中的值匹配

时间:2018-03-02 20:10:23

标签: typescript lodash

我目前有以下内容,想知道是否有更简洁的方法,因为我不喜欢包含该标志。

const countries = [...];
const religionFilter = [ "religA", "religB" ];
const religionFilteredCountries = [];

_.forEach(countries,
    c => {
        let flag = false;

        _.forEach(c.info, i => {
            if (_.includes(religionFilter, i.religions)) {
                flag = true;
            }
        });
        if (flag) {
            religionFilteredCountries.push(c);
        }
    }
);

这是jsfiddle

以下是更新后的jsfiddle

1 个答案:

答案 0 :(得分:2)

由于您已经在使用lodash,因此可以像这样写religionFilteredCountries

const religionFilteredCountries =
  countries.filter((c) => _.intersection(religionFilter, c.religions).length > 0);