Javascript(角度)从一个对象数组到第二个数组查找值

Javascript(角度)从一个对象数组到第二个数组查找值,javascript,Javascript,我需要从第一个数组添加到第二个数组对象(如果在第二个数组中找不到) 例如: var array1=[{username:user1,id:11},{username:user2,id:12},{username:user3,id:13},{username:user4,id:14}]; var array2=[{username:user4,id:14},{username:user43,id:43}]; var结果数组=[{username:user1,id:11},{username:us

我需要从第一个数组添加到第二个数组对象(如果在第二个数组中找不到)

例如:

var array1=[{username:user1,id:11},{username:user2,id:12},{username:user3,id:13},{username:user4,id:14}];
var array2=[{username:user4,id:14},{username:user43,id:43}];

var结果数组=[{username:user1,id:11},{username:user2,id:12},{username:user3,id:13},{username:user4,id:14},{username:user43,id:43}]我认为可以使用下划线,首先合并两个数组,然后调用

希望有帮助。

使用lodash库

HTML

这段代码将数组中的所有元素放在一起,然后对unique的回调返回一个值,lodash使用该值来确定unique的含义

如果您发现还需要用户名,可以返回

a.id + "somethinguniquehere" + a.username

这不能简单地用JS
数组来解决。concat
不是因为它是对象数组。因为您需要先删除重复项。因此,我建议使用
filter
,因为它受到广泛支持。对于较旧的浏览器,在系统中实现polyfill块。或者,您也可以使用
findIndex
及其polyfill

var array1 = [...];
var array2 = [...];

for(var 1=0, len=array2.length; i<len; i++) {
   if (array1.filter(function(el) { el.id === array2[i].id }).lenght == 0) {
      array1.push(array2[i]);
   }
}
var array1=[…];
var array2=[…];

对于(var 1=0,len=array2.length;我感谢你:)它非常有用!!!数组内容的类型没有区别,您只需按id比较对象即可。抱歉-1,但OP没有要求新的库实现要求JS或角度解决方案。仅仅为了一个简单的问题而添加一个新库。@OnurTOPAL这真的不公平。人们是将“简单问题”发布到web上,还是发布利用常用工具库优化代码和简化开发的可伸缩应用程序?正如OP“没有要求一个新的库impl”,他也没有要求一个纯JS解决方案。我认为提供使用常用库(如jquery、lodash/下划线、moment、gsap等)提供解决方案的答案没有错。请重新考虑您的否决票。抱歉-1,但OP没有要求新的库实现要求JS或Angular解决方案。添加一个新库只是为了解决一个简单的问题。
a.id + "somethinguniquehere" + a.username
var array1 = [...];
var array2 = [...];

for(var 1=0, len=array2.length; i<len; i++) {
   if (array1.filter(function(el) { el.id === array2[i].id }).lenght == 0) {
      array1.push(array2[i]);
   }
}