Array.find Array.map 在 Javascript
Array.find with Array.map in Javascript
我有两个数组,在第一个数组中我存储了一些用户数据。第二,我存储用户的基本数据。
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);
我有两个数组,在第一个数组中我存储了一些用户数据。第二,我存储用户的基本数据。
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);