javascript - LoDash 检查对象一和对象二的值是否相等(如果比较)

标签 javascript angularjs lodash

我可以使用 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/

相关文章:

javascript - 无法根据设备自动调整YouTube播放器的大小

javascript - 如何访问不同 Controller 的功能? - JavaScript MVC

javascript - Angular 副本无法让客户端保持最新状态

javascript - 在 angularjs 自定义指令中创建一个 canvas 元素

javascript - 如何根据每个对象中的字符串属性数组深入比较/匹配数组中的对象?

javascript - 如何使用 lodash 根据值对嵌套数组进行排序?

javascript - 使用带有下划线的 lodash

javascript - 如何防止在正文内容上滚动并在打开时启用在 Canvas 外导航上滚动?

javascript - 为什么我的 JS 程序无法运行?

javascript - 如何警告 Angular ui 网格导入文件失败?