javascript - 从另一个数组中过滤出一个数组

标签 javascript angular typescript lodash

<分区>

所以我有 2 个对象数组,看起来像这样

    this.balanceCodes = [
        { ID: 1, StringValue: "dummy" },
        { ID: 2, StringValue: "data" }
    ];
    this.allCodes = [
        { ID: 1, StringValue: "dummy", Color: "red", Order: "low" },
        { ID: 2, StringValue: "data", Color: "green", Order: "medium" },
        { ID: 3, StringValue: "extra", Color: "black", Order: "low" },
        { ID: 4, StringValue: "options", Color: "grey", Order: "high" }
    ];

我想过滤掉 this.balanceCodes 中的对象(基于 ID)

所以期望的结果是:

    this.result = [
        { ID: 3, StringValue: "extra", Color: "black", Order: "low" },
        { ID: 4, StringValue: "options", Color: "grey", Order: "high" }
    ];

我怎样才能做到这一点?我知道我可以轻松地过滤掉一个对象,但我如何才能对整个对象数组执行此操作?

我可以使用 Lodash。

最佳答案

使用_.differenceBy()在第一个数组 (allCodes) 中查找在第二个数组 (balanceCodes) 中找不到的项目:

var balanceCodes = [
    { ID: 1, StringValue: "dummy" },
    { ID: 2, StringValue: "data" }
];
var allCodes = [
    { ID: 1, StringValue: "dummy", Color: "red", Order: "low" },
    { ID: 2, StringValue: "data", Color: "green", Order: "medium" },
    { ID: 3, StringValue: "extra", Color: "black", Order: "low" },
    { ID: 4, StringValue: "options", Color: "grey", Order: "high" }
];

var result = _.differenceBy(allCodes, balanceCodes, 'ID');

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

关于javascript - 从另一个数组中过滤出一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509468/

相关文章:

angular - Angular 中的延迟 HTTP 请求

Angular 7无法访问管理文件夹文件

javascript - 当你在 json 中有两行时,如何解决意外的 token 错误?

javascript - 在 Javascript 中嵌套对象 - 匿名不是函数错误

javascript - 我正在尝试用 jQuery 替换 Xpath

angular - 固定 : Angular 9: Undecorated base classes that use Angular features

javascript - typescript 为 winston 日志记录级别添加颜色

javascript - 我想通过ajax调用从 map 获取json数据

css - 带有 border-top-left-radius 和 border-bottom-left-radius 的 Angular --prod 问题

angular - TypeError : _co. class.function 不是函数