以一对一的关系匹配数组的有效方法

时间:2017-10-25 08:36:03

标签: node.js ecmascript-6

如果在节点中我们有2个具有一对一关系的对象数组,并且我们想要有效地匹配它们,那么是否有一些函数用于以更清洁的方式执行以下操作?

var users = [{id:1},{id:2}]
var userDetails =[{userId:1, eyeColor:'red'},{userId:2, eyeColor:'blue'}]

users.map((u)=>{
    userDetails.find((detail,index)=>{
        return u.id == u.userId ? u.eyeColor = userDetails.splice(index, 1)[0] : false;
    })
})

1 个答案:

答案 0 :(得分:1)

我认为您的代码已经足够简化了。或者,您可以使用过滤器

var filteredArray  = users.filter(function(first){
   return userDetails.filter(function(second){
      return first.id == second.userId;
   });
});

或者您可以查看lodash库以获得更简化的方式