簡體   English   中英

使用 es6 map 創建一個包含空對象的對象

[英]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.

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