[英]How to extract from object based on value of a property
我有一個對象數組,想根據屬性提取值
let obj = [
{
"name": "USA",
"type": "Required",
},
{
"name": "Australia",
"type": "Discontinued",
},
{
"name": "Austria",
"type": "Optional",
} ,
{
"name": "Argentina",
"type": "Required",
}
]
我試圖根據這樣的類型從該對象數組中提取內容,
let arr = obj.map((cc)=>{ if(cc["type"] == "Required"){
return cc["type"]
} })
現在,我得到的結果為:[“ Required”,未定義,未定義,“ Required”]
但是,我期望僅包含[“ Required”,“ Required”]的數組
在地圖上使用過濾器
let arr = obj.filter((cc)=> cc["type"] == "Required").map( cc => cc.type);
如果您想迭代一次,則可以使用reduce
:
obj.reduce((a, e) => e.type === 'Required' ? a.concat(e.type) : a, [])
如其他答案所示,您將要使用filter
和map
,
let arr = obj.filter(cc => cc.type=="Required").map(cc => cc.type);
反之亦然,因為您的情況仍然基於地圖結果:
let arr = obj.map(cc => cc.type).filter(val => val=="Required");
但是,如果您想一步一步做,我建議您使用flatMap
:
let arr = obj.flatMap(cc => cc.type=="Required" ? [cc.type] : []);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.