簡體   English   中英

根據條件過濾 object

[英]Filter object based on condition

我有一個 object 作為

sports={
   "cricket":true,
   "football":true,
   "tennis":false
}

我想將所有真實的運動過濾成一個數組,例如[cricket,football]

按照上面的代碼返回數組中的真值鍵,如 [cricket,football]

const sports = {
  cricket: true,
  football: true,
  tennis: false,
};

const result = Object.keys(sports).filter((current) => {
  return sports[current];
});

使用 for...in 結構:

 sports={ cricket:true, football:true, tennis:false } const result = [] for(const sport in sports) { if (sports[sport]) result.push(sport) } console.log(result)

關於 for...in 的更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

var sports_arr = Object.keys(sports);
var tmp = [];
for(var i = 0; i < sports_arr.length && sports[sports_arr[i]]; i++)
  tmp.push(sports_arr[i]);

您可以像這樣使用Object.entries()Array.prototype.filter()Array.prototype.map()

 const sports = { cricket:true, football:true, tennis:false, }; console.log(Object.entries(sports).filter(([key, value]) => value).map(([key, value]) => key));

Object.entries()返回一個包含鍵值對的數組:

[
  ['cricket', true],
  ['football', true],
  ['tennis', false],
]

然后,您可以檢查每個條目上的第二個元素以過濾掉那些為false的元素:

[
  ['cricket', true],
  ['football', true],
]

然后使用 map 只保留第一個元素:

[
  'cricket',
  'football',
]

正如@David784 在評論中所發布的,這是最簡單的解決方案。 無需進一步復雜化:

 const sports = { cricket:true, football:true, tennis:false, }; const result = Object.keys(sports).filter(key => sports[key]); console.log(result);

只需獲取一組鍵( Object.keys(sports) ),然后使用 .filter() 丟棄值不true.filter()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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