lodash,检查集合是否包含具有值

时间:2017-05-23 08:42:55

标签: lodash

这会将replacement_codes过滤为具有代码属性的项目集合,该代码属于replacement_codes。代码按预期工作,但不太可读。

return this.replacement_codes.filter((code) => {
    let length = this.items.length;
    for (let index = 0; index < length; index++) {
        if (this.items[index].code === code) {
            return false;
        }
    }

    return true;
});

我试图找出如何让lodash为我做这件事。

以下代码有效。现在我无法弄清楚如何使用lodash获取布尔结果来检查集合是否包含具有给定值的属性。

return _.filter(this.replacement_codes, (code) => {
    let length = this.replacements.length;
    for (let index = 0; index < length; index++) {
        if (this.replacements[index].code === code) {
            return false;
        }
    }

    return true;
});

进一步深化:

let items = [
    {
        code: 'a',
        value: 'something1'
    },
    {
        code: 'b',
        value: 'something2'
    },
    {
        code: 'c',
        value: 'something3'
    },
    {
        code: 'd',
        value: 'something4'
    },
];

let array_to_filter = ['a', 'd', 'z', 'x'];

我希望过滤后的数组为[&#39; z&#39;,&#39; x&#39;];

1 个答案:

答案 0 :(得分:0)

我相信你可以使用_.differenceWith

来解决这个问题
let items = [
    {
        code: 'a',
        value: 'something1'
    },
    {
        code: 'b',
        value: 'something2'
    },
    {
        code: 'c',
        value: 'something3'
    },
    {
        code: 'd',
        value: 'something4'
    },
  ];

  let array_to_filter = ['a', 'd', 'z', 'x'];

  let r = _.differenceWith(array_to_filter, items, (f, i) => f == i.code );

  console.log(r)