gpt4 book ai didi

javascript - 通过匹配两个值的差异从数组中过滤对象

转载 作者:行者123 更新时间:2023-11-30 11:05:46 25 4
gpt4 key购买 nike

我有一个数组,我想用另一个数组过滤它。我的目标是用两个值过滤数组,我希望结果只与这两个值完全匹配。这是我目前所拥有的:

const array = [
{
title: 'Title A',
someOtherProps: [
'AAA',
]
}, {
title: 'Title B',
someOtherProps: [
'AAA',
'BBB',
]
}, {
title: 'Title C',
someOtherProps: [
'BBB',
'CCC'
]
}, {
title: 'Title D',
someOtherProps: [
'BBB',
]
}, {
title: 'Title E',
someOtherProps: [
'CCC'
]
},
]

const filter = [
'AAA',
'BBB',
]

let result = array.filter(obj => obj.someOtherProps.some(props => filter.includes(props)))
console.log(result);

因此,我的结果包含具有过滤值的对象。

// My Result
{
title: 'Title A'
someOtherProps: [
'AAA',
]
}, {
title: 'Title B'
someOtherProps: [
'AAA',
'BBB',
]
}, {
title: 'Title C'
someOtherProps: [
'BBB',
'CCC'
]
}, {
title: 'Title D'
someOtherProps: [
'BBB',
]
}

到目前为止一切顺利。但我不需要所有具有其中一个值的对象。我需要这个对象,它恰好结合了这两个值。

// Wanted Result
{
title: 'Title B'
someOtherProps: [
'AAA',
'BBB',
]
}

我找不到方法。我知道如何获得两个数组的差异。但是我需要两个值的差,如果你明白我的意思的话。

最佳答案

使用Array#every()filter 数组上并检查其所有值是否包含在对象的 someOtherProps 中。您可以使用 Array#find()为此,如果您只想要一个对象

const array = [ { title: 'Title A', someOtherProps: [ 'AAA', ] }, { title: 'Title B', someOtherProps: [ 'AAA', 'BBB', ] }, { title: 'Title C', someOtherProps: [ 'BBB', 'CCC' ] }, { title: 'Title D', someOtherProps: [ 'BBB', ] }, { title: 'Title E', someOtherProps: [ 'CCC' ] }, ]

const filter = ['AAA','BBB',]

let res = array.find(x => filter.every( a => x.someOtherProps.includes(a)));
console.log(res)

如果您想要所有符合条件的元素,请使用 filter()

const array = [ { title: 'Title A', someOtherProps: [ 'AAA', ] }, { title: 'Title B', someOtherProps: [ 'AAA', 'BBB', ] }, { title: 'Title C', someOtherProps: [ 'BBB', 'CCC' ] }, { title: 'Title D', someOtherProps: [ 'BBB', ] }, { title: 'Title E', someOtherProps: [ 'CCC' ] }, ]

const filter = ['AAA','BBB',]

let res = array.filter(x => filter.every( a => x.someOtherProps.includes(a)));
console.log(res)

关于javascript - 通过匹配两个值的差异从数组中过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55675723/

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