【问题标题】:Selecting elements with lodash where inner properties match values in an array使用 lodash 选择内部属性与数组中的值匹配的元素
【发布时间】:2018-03-02 20:10:23
【问题描述】:

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

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

【问题讨论】:

    标签: typescript lodash


    【解决方案1】:

    既然你已经在使用 lodash,你可以这样写religionFilteredCountries

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

    【讨论】:

    • 我已经更新了我的问题,因为我似乎将错误的模型粘贴到了第一个 jsfiddle 中。你有没有机会更新你的答案?除非我从 typescript 切换到 javascript,否则我似乎也遇到了错误,至少在 jsfiddle 中,使用特定代码 sn-p。
    • 小提琴中的代码与问题文本中的代码相同,但如果您更新问题,我可以调整答案。否则答案将毫无意义。该错误似乎是一些 jsfiddle 怪癖,可以通过向箭头函数(c) => {return ..} 添加显式返回来修复,但这在普通 TypeScript 中不是必需的。
    • 实际上,将问题保留原样并将c.religions 替换为_.map(c.info, 'religion') 可能更容易让它在你的第二小提琴中工作。
    猜你喜欢
    • 1970-01-01
    • 2015-04-15
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多