如何在javaScript或lodash中过滤具有动态键值的对象的对象。
我的数据是:
var names = [
{
name: 'c1',
tags: {
key1: 'value1-1',
key2: 'value1-2',
},
},
{
name: 'c2',
tags: {
key1: 'value2-1',
key2: 'value1-2',
},
},
{
name: 'c3',
tags: {
key3: 'value3-1',
key4: 'value3-2',
},
}
]
且过滤数据为:
var filterData = {
key3: { 0: 'value3-1' },
key4: { 0: 'value3-2' }
}
我希望过滤器和之后的过滤器显示如下:
afterFilter = [
{
name: 'c3',
tags: {
key3: 'value3-1',
key4: 'value3-2',
}
}
]
如果任务是过滤完全相同的标签:字符串化filterData和基于字符串化标签的过滤器名称
var names = [
{
name: 'c1',
tags: {
key1: 'value1-1',
key2: 'value1-2',
},
},
{
name: 'c2',
tags: {
key1: 'value2-1',
key2: 'value1-2',
},
},
{
name: 'c3',
tags: {
key3: 'value3-1',
key4: 'value3-2',
},
}
]
var filterData = {
key3: { 0: 'value3-1' },
key4: { 0: 'value3-2' }
}
var filter = JSON.stringify(Object.fromEntries(Object.entries(filterData).map(x=>[x[0],x[1][0]])))
console.log(
names.filter(({tags})=>JSON.stringify(tags)===filter)
)