我有一个对象列表:
feature-module-routing
下面是我的代码:
scene module
我需要列出包含category ='def'的'a'中的对象。好像我无法过滤它,因为我的'类别'是数组格式。 你们是如何解决它的?
答案 0 :(得分:0)
只需检查def是否在数组中,如:
a.category.includes('def')
答案 1 :(得分:0)
b
.filter((v,i) => (v.category.includes('def')))
.map((v,i) => (
<div>{v.number}</div>
))
答案 2 :(得分:0)
您的对象存储为对象数组,这意味着您无法“键入”进行检查。因此,您必须检查数组的所有元素,以查看是否存在密钥category
,以及2.查看def
是否在包含category
的对象中。
Array#includes
有一个经常被忽视的哥哥。 Array#some
,它接受一个可以满足你需要的回调。
然后,您必须再次使用Array#find
遍历已过滤的数组,以查找具有键number
的对象,然后打印该值。您也可以使用这些对象的索引号手动完成此操作,但它的稳健性要差得多。
a = [[{number:1},{category:['abc', 'cde']},{class:2}],
[{number:2},{category:['abc', 'def']},{class:3}],
[{number:3},{category:['def']},{class:4}]]
h = a.filter((arr) => {
return arr.some((obj) => {
if (obj.category) {
return obj.category.includes('def')
} else {
return false
}
})
})
console.log(h)
j = h.map((arr) => {
let numObject = arr.find((obj) => ('number' in obj));
if (numObject) {
return numObject.number
} else {
return //something
}
})
console.log(j)