我需要找到数组的所有对象,这些对象在“模式”属性中包含颜色“绿色”。
let arr = [
{
"type": "One",
"mode": [{
"color": "blue",
"size": "L"
}
]
}, {
"type": "Two",
"mode": [{
"color": "green",
"size": "M"
}
]
},{
"type": "Three",
"mode": [{
"color": "green",
"size": "L"
}
]
},{
"type": "Four",
"mode": [{
"color": "red",
"size": "XS"
}
]
}
];
let result = arr.indexOf(arr.find(function(el,index){
return el['mode'][0].color === 'green';
}))
console.log(result);
目前只能获取索引。
我希望在输出中得到类似下面的内容:
[
{
"type": "Two",
"mode": [{
"color": "green",
"size": "M"
}
]
},{
"type": "Three",
"mode": [{
"color": "green",
"size": "L"
}
]
}
]
2条答案
按热度按时间r7xajy2e1#
使用Array.prototype.filter和Array.prototype.some搜索内部数组
要额外过滤内部
"mode":
数组,请改用Array.prototype.reduce。zzlelutf2#
最佳方法是使用两种阵列方法:
filter
和some
。filter
允许你迭代数据数组,只返回那些符合特定条件的对象,在这个例子中,它是mode
数组中是否有任何对象的颜色是“绿色”。