簡體   English   中英

如何基於屬性值從對象中提取

[英]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, [])

如其他答案所示,您將要使用filtermap

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM