簡體   English   中英

Array.find 與 Array.map 在 Javascript

[英]Array.find with Array.map in Javascript

我有兩個 arrays,在第一個中我存儲了一些用戶數據。 其次,我存儲有關用戶的基本數據。

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”?


對不起,我的英語不太好。

沒有什么比這種方式更簡單的了,但是您可以對其進行優化,這樣您就不必對每個鍵都使用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);

對於較大的數據集,最好使用不同的數據結構來提高查找性能並減少運行時間。

 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);

暫無
暫無

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

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