Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从另一个数组中筛选出一个数组_Javascript_Angular_Typescript_Lodash - Fatal编程技术网

Javascript 从另一个数组中筛选出一个数组

Javascript 从另一个数组中筛选出一个数组,javascript,angular,typescript,lodash,Javascript,Angular,Typescript,Lodash,我有两个对象数组,看起来像这样 this.balanceCodes = [ { ID: 1, StringValue: "dummy" }, { ID: 2, StringValue: "data" } ]; this.allCodes = [ { ID: 1, StringValue: "dummy", Color: "red", Order: "low" }, { ID: 2, StringValue:

我有两个对象数组,看起来像这样

    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" }
    ];
我想筛选出
此.balanceCodes
中的对象(基于ID)

因此,预期的结果将是:

    this.result = [
        { ID: 3, StringValue: "extra", Color: "black", Order: "low" },
        { ID: 4, StringValue: "options", Color: "grey", Order: "high" }
    ];
我怎样才能做到这一点?我知道我可以很容易地过滤掉一个对象,但是如何才能对整个对象数组进行过滤呢

我可以使用Lodash。

用于查找第1个数组(
allcode
)中未在第2个数组(
balancecode
)中找到的项目:

var余额代码=[
{ID:1,StringValue:“dummy”},
{ID:2,StringValue:“数据”}
];
var allCodes=[
{ID:1,StringValue:“dummy”,Color:“red”,Order:“low”},
{ID:2,StringValue:“数据”,颜色:“绿色”,顺序:“中等”},
{ID:3,StringValue:“额外”,Color:“黑色”,Order:“低”},
{ID:4,StringValue:“选项”,颜色:“灰色”,顺序:“高”}
];
var结果=u.differenceBy(所有代码,余额代码,'ID');
控制台日志(结果)

您可以通过使用和来实现这一点,而无需使用lodash:

var余额代码=[
{ID:1,StringValue:“dummy”},
{ID:2,StringValue:“数据”}
];
var allCodes=[
{ID:1,StringValue:“dummy”,Color:“red”,Order:“low”},
{ID:2,StringValue:“数据”,颜色:“绿色”,顺序:“中等”},
{ID:3,StringValue:“额外”,Color:“黑色”,Order:“低”},
{ID:4,StringValue:“选项”,颜色:“灰色”,顺序:“高”}
];
var结果=所有代码。过滤器((代码)=>
balanceCode.every((balanceCode)=>balanceCode.ID!==code.ID));

控制台日志(结果)\删除是最好的选择。如果ID是唯一的-类似这样的内容就足够了(使用lodash):

for( let balanceCode of balanceCodes){
    _.remove( allCodes, (code) => { code.ID === balanceCode.ID })
}