根据过滤器输入获取过滤后的数组
2020-11-30
66
我想基于输入“过滤”和对象:
014918813
我尝试使用MAP函数以:
获得最终结果193901485
,但我得到了“一个对象[null,null,null]
我想获得一个对象,例如:
965953613
仅仅是第一个2,具有ID标签:1
我该怎么做?
3个回答
您可以在主数组上组合
filter()
,然后在标签数组上应用
some()
。
const transactions =
[
{ _id:1,
amount:100,
tags:[{id: 1, label: 'A'},
]
},
{ _id:2,
amount:200,
tags:[{id: 1, label: 'A'},
{ id: 2, label: 'B'}]
},
{ _id:3,
amount:500,
tags:[{ id: 2, label: 'B'}
]
}
]
let tag = 1
const res = transactions.filter(obj => obj.tags.some(tag => tag.id === 1));
console.log(res)
Maheer Ali
2020-11-30
您可以将
Array.prototype.some
与您的过滤器结合使用:
const tag = 1;
const transactionsFilter = transactions.filter(transaction =>
transaction.tags.some(tag => tag.id == tag)
);
Aplet123
2020-11-30
您可以使用
Array.prototype.some
对标签进行测试,并使用
Array.prototype.filter
检查项目是否匹配:
const matchTagId = (tagId, input) =>
input.filter (({tags}) => tags .some (({id}) => id == tagId))
const input = [{_id: 1, amount:100, tags: [{id: 1, label: 'A'}]}, { _id: 2, amount: 200, tags:[{id: 1, label: 'A'}, {id: 2, label: 'B'}]}]
console .log (matchTagId (1, input))
.as-console-wrapper {max-height: 100% !important; top: 0}
Scott Sauyet
2020-11-30