我有兩個陣列,在第一個陣列中我存盤了一些用戶資料。第二,我存盤有關用戶的基本資料。
const usersData = [{ userId: 1, age: 18 }];
const users = [{id: 1, name: 'Alex'}];
我在下面寫了一些簡單的代碼:
const result = usersData.map(userData => {
return {
...userData,
userName: users.find(user => user.id === userData.userId).name
}
})
之后,我得到了結果:
const result = [{ userId: 1, age: 18, name: "Alex" }];
問題是:如何以更簡單的方式撰寫此解決方案?也許應該使用圖書館“Lodash”?
對不起,我的英語不太好。
uj5u.com熱心網友回復:
對于較大的資料集,最好使用不同的資料結構來提高查找性能并減少運行時間。
const usersData = [{ userId: 1, age: 18 }];
const users = [{id: 1, name: 'Alex'}];
const usersById = Object.fromEntries(users.map(user => ([user.id, user])));
const result = usersData.map(userData => {
return {
...userData,
userName: usersById[userData.userId]?.name
}
})
console.log(result);
uj5u.com熱心網友回復:
沒有什么比這種方式更簡單的了,但是您可以對其進行優化,這樣您就不必find對每個鍵都使用。為此,您可以Map在此處使用。
Note: If are trying to use any library, then under the hood they might be using the same method
const usersData = [{ userId: 1, age: 18 }];
const users = [{id: 1, name: 'Alex'}];
const usersDict = new Map(); // dictionary for users
users.forEach(o => usersDict.set(o.id, o));
const result = usersData.map(user => ({ ...user, username: usersDict.get(user.userId)?.name}))
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/359711.html
標籤:javascript 数组 合并
上一篇:獲取任何國家的時間格式
