gpt4 book ai didi

Javascript 在对象数组上使用过滤器/包含

转载 作者:行者123 更新时间:2023-11-29 10:30:41 24 4
gpt4 key购买 nike

过滤掉对象中存在的数据的最佳方法是什么?

data 只是一个值数组时,我可以使用下面的代码,但现在我需要 filteritem 中的所有数据。 QID 存在于我的对象数组中。

数据对象:

var data = [{
QID: 'ABC123',
Name: 'Joe'
},
{
QID: 'DEF456',
Name: 'Bob
}]

片段:

// I don't want to include data if this QID is in my object
this.employees = emp.filter(item =>!this.data.includes(item.QID));

据我所知,includes 仅适用于数组,因此我需要将对象中的所有 QID 值都视为数组。

期望的结果:(假设 item.QID = ABC123)

this.employees = emp.filter(item =>!this.data.includes('ABC123'));

结果:

var data = [{
QID: 'DEF456',
Name: 'Bob'
}]

更新:抱歉,我留下了一些不清楚的地方,试图只包括必要的东西。

// People Search
this.peopleSearchSub = this.typeahead
.distinctUntilChanged()
.debounceTime(200)
.switchMap(term => this._mapsService.loadEmployees(term))
.subscribe(emp => {
// Exclude all of the current owners
this.employees = emp.filter((item) => item.QID !== this.data.QID);
}, (err) => {
this.employees = [];
});

上面的代码是我正在使用的。 data 是一个用户对象,我想通过过滤将其从我的预输入结果中排除。

最佳答案

这个问题有点模棱两可,但我的理解(如果我错了请纠正我)是你想从列表 emp 中删除与任何项目具有相同 QID 的所有项目在另一个列表中 data?

如果是这样,请尝试:

this.employees = emp.filter(item => !this.data.some(d => d.QID === item.QID))

some 是一个数组方法,如果它的回调对于任何数组元素为真,则返回真。所以在这种情况下,如果列表 data 的任何元素具有相同的 QID,则 some(d => d.QID === item.QID) 将为真作为项目

关于Javascript 在对象数组上使用过滤器/包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46819974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com