簡體   English   中英

我怎樣才能 map 數組內的對象數組並產生結果?

[英]How can I map the array of objects inside an array and produce a result?

我正在嘗試在這里執行 hashmap 類似的任務。 肯定感覺難受。 美國是本田和特斯拉的共同點,日本是本田的,中國是現代的。 我在這里嘗試過,但我覺得通過在 map 中執行 map 使事情變得過於復雜。

 const cars = [ { id: 1, name: 'Honda', model: 2017, data: [ { id: 101, city: 'JAPAN' }, { id: 102, city: 'USA' }, ], }, { id: 2, name: 'Tesla', model: 2018, data: [ { id: 103, city: 'CHINA' }, { id: 102, city: 'USA' }, ], }, { id: 3, name: 'Hyundai', model: 2019, }, ]; const obj = {}; const arr = []; cars.map((item) => { if ('data' in item) { item.data.map((ele) => { obj.myCarId = { data: { id: ele.id, city: ele.city }, cars: [{ id: item.id, name: item.name, model: item.model }], }; arr.push(obj); }); } });

// Expected answer:
 {
 ['101']: {
    data:{ id: 101, city: 'JAPAN'},
    car:[{id: 1,name: 'Honda',model: 2017}],
    },
  ['102']: {
    data:{ id: 102, city: 'USA'},
    car:[{id: 1,name: 'Honda',model: 2017},{id: 2,name: 'Tesla',model: 2018}],
  },
 ['103']: {
     data:[{ id: 103, city: 'CHINA'}],
     car:[{id: 3, name: 'Hyundai',model: 2019}],  
  },
 }

我如何使用本田和特斯拉 map 我的美國數據並生成 output 類似上面的東西?

您可以使用flatMap將 arrays 數組轉換為數組,然后您可以使用Object.fromEntires將 [key,value] 數組轉換為 ZA8CFDE6331BD59EB2AC96F8911C4B66

所以你需要做的就是解開你的數據

編輯:看起來我誤讀了您的要求,所以這是一個使用 map 而不是 object 和一些 for 循環而不是回調的新版本

 const cars = [ { id: 1, name: 'Honda', model: 2017, data: [ { id: 101, city: 'JAPAN' }, { id: 102, city: 'USA' }, ], }, { id: 2, name: 'Tesla', model: 2018, data: [ { id: 103, city: 'CHINA' }, { id: 102, city: 'USA' }, ], }, { id: 3, name: 'Hyundai', model: 2019, }, ]; const map = new Map(); for (const car of cars) { for (const datum of car?.data?? []) { if (.map.has(datum.id)) { map.set(datum,id: { data, datum: cars; [] }). } map.get(datum.id).cars:push({ id. car,id: name. car,name: model. car,model; }). } } console.log(Object.fromEntries(map;entries()));

暫無
暫無

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

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