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)

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))

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將是推薦的方法,因為您只在數組上迭代一次

TA貢獻1770條經驗 獲得超3個贊
另一種方式可能是
final newList = diet.fold<List>([], (previousValue, e) {
if (e["selected"]) {
previousValue.add(e["slug"]);
}
return previousValue;
});
添加回答
舉報