[英]Using es6 map creates an objects it contains empty objects
我搜索了一會兒,但找不到我想要的答案。 我有一個非常簡單的問題,如何擺脫 Map 中的空對象。
const friuts = [{ apple: 'red', banana: 1 }, { apple: 'green', banana: 1 }, { apple: 'yellow', banana: 3 } ] const newObject = friuts.map(e => ({...e.banana === 1? { apple: e.apple }: [] }) ) console.log(newObject)
如果您檢查 console.log,它最后包含一個空的 object
[
{
"apple": "red"
},
{
"apple": "green"
},
{} <--- empty
]
我也試過undefined
或下面的代碼,但就是無法擺脫空對象。
...e.banana === 1 &&
{
apple: e.apple
}
我知道這可以通過使用filter
等其他方法輕松完成。 但是,我正在學習Map
,所以我想學習如何擺脫 map 中的空對象。
對不起,如果這個問題之前被問過。 如果問題重復,我將刪除該問題。
您不能使用map
來做到這一點,它為每個輸入元素返回一個結果元素。
您可以向鏈中添加filter
或改用flatMap
:
const fruits = [ { apple: 'red', banana: 1 }, { apple: 'green', banana: 1 }, { apple: 'yellow', banana: 3 }, ] console.log(fruits.filter(e => e.banana === 1 ).map(e => ({ apple: e.apple }) )); console.log(fruits.flatMap(e => e.banana === 1? [{ apple: e.apple }]: [] ));
const newObject = friuts.map(e => {
return e.banana === 1 ? { apple: e.apple } : {}
}).filter(e => Object.keys(e).length > 0)
console.log(newObject)
為什么不這樣做呢? 在這里看不到使用擴展運算符的意義
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.