亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據布爾屬性將對象數組減少為字符串數組

根據布爾屬性將對象數組減少為字符串數組

鳳凰求蠱 2023-08-18 17:37:36
我想根據布爾屬性將對象數組減少為字符串數組。我的對象數組如下所示:diet: [ { slug: "dairy-free", selected: true, }, { slug: "fish", selected: false, }, { slug: "meat", selected: false, }, { slug: "poultry", selected: true, }, { slug: "vegetarian", selected: true, }, ]如果所選值為 true,我的理想結果將是一個字符串數組。["dairy-free", "poultry", "vegetarian"]
查看完整描述

4 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

你只需要filter和map。


使用filter你將得到那些selected真正有價值的人。用于將這些對象的值map映射slug到數組中。


var diet = [ { slug: "dairy-free", selected: true, }, { slug: "fish", selected: false, }, { slug: "meat", selected: false, }, { slug: "poultry", selected: true, }, { slug: "vegetarian", selected: true, }, ]


var newArray = diet.filter(f => f.selected).map(m => m.slug)

console.log(newArray)


查看完整回答
反對 回復 2023-08-18
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

您可以使用方法來過濾選擇值為 true 的filter記錄。這將返回滿足條件的對象數組


var diet = [ { slug: "dairy-free", selected: true, }, { slug: "fish", selected: false, }, { slug: "meat", selected: false, }, { slug: "poultry", selected: true, }, { slug: "vegetarian", selected: true, }, ]


console.log(diet.filter(e => e.selected))


如果只想返回slug屬性,可以使用filter和map方法組合


var diet = [ { slug: "dairy-free", selected: true, }, { slug: "fish", selected: false, }, { slug: "meat", selected: false, }, { slug: "poultry", selected: true, }, { slug: "vegetarian", selected: true, }, ]


    console.log(diet.filter(e => e.selected == true).map(e => e.slug))


查看完整回答
反對 回復 2023-08-18
?
桃花長相依

TA貢獻1860條經驗 獲得超8個贊

Array像這樣使用函數filter和的組合map:


let diet= [ { slug: "dairy-free", selected: true, }, { slug: "fish", selected: false, }, { slug: "meat", selected: false, }, { slug: "poultry", selected: true, }, { slug: "vegetarian", selected: true, }, ]


let selected=diet.filter(type=>type.selected).map(selectedType=>selectedType.slug)

console.log(selected)


不幸的是,這需要對數組進行兩次迭代,一次過濾掉selected,一次只返回slug


reduce您也可以使用這樣的方法獲得相同的結果


let diet= [ { slug: "dairy-free", selected: true, }, { slug: "fish", selected: false, }, { slug: "meat", selected: false, }, { slug: "poultry", selected: true, }, { slug: "vegetarian", selected: true, }, ]


let reduced = diet.reduce((filtered, option)=> {

  if (option.selected) {

     filtered.push(option.slug);

  }

  return filtered;

}, []);


console.log(reduced)


reduce將是推薦的方法,因為您只在數組上迭代一次


查看完整回答
反對 回復 2023-08-18
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

另一種方式可能是


final newList = diet.fold<List>([], (previousValue, e) {

      if (e["selected"]) {

        previousValue.add(e["slug"]);

      }

      return previousValue;

    });


查看完整回答
反對 回復 2023-08-18
  • 4 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號