[英]How do I map over a contacts array to produce a new array with objects and properties?
[英]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.