我可以使用 LoDash 做得更好吗?我想检查第一个对象 ID 是否与第二个对象 ID 相同,如果是,它应该从第二个对象向第一个对象添加一些内容。这是我目前的解决方案:
vm.forumUsers.forEach(function(user, forumIndex){
vm.teamspeakClients.forEach(function(client, clientIndex){
if (user.tsid === client.client_unique_identifier) {
vm.forumUsers[forumIndex]['tsdbid'] = client.cldbid;
vm.forumUsers[forumIndex]['tsnickname'] = client.client_nickname;
vm.forumUsers[forumIndex]['tslastconnected'] = client.client_lastconnected;
}
});
});
vm.usersCollection = vm.forumUsers;
最佳答案
JS 已经为许多 Underscore/Lodash 的目的提供了惯用的方法。
对于 ES5 可能是
vm.forumUsers.forEach(function(user) {
var client = vm.teamspeakClients
.filter(function (client) { return user.tsid === client.client_unique_identifier })
.map(function (client) { return {
tsdbid: client.cldbid,
tsnickname : client.client_nickname,
tslastconnected: client.client_lastconnected
})[0];
Object.assign(user, client);
});
对于 ES6,它变得更加整洁。
如果性能确实如此(这可能是具有大量数据的 UI 代码的问题)原始 for
循环始终是最佳选择。
关于javascript - LoDash 检查对象一和对象二的值是否相等(如果比较),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40947896/