var arr2=[{id:1,name:'23'}]
var arr1=[{id:1,car:'car2'}]
const combined = arr2.reduce((acc, cur) => {
const target = acc.find(e => e.id === cur.id);
console.log(target)
if (target) {
Object.assign(target, cur);
} else {
acc.push(cur);
return acc;
}, arr1);
参考资料:
reduce方法的使用
arr2.reduce(function(acc,cur),arr1):reduce方法传入的函数的第一个参数acc是数组元素的累计值,reduce方法的第二参数arr1是指定累计值acc的初始值。
所以一开始acc的值就是arr1,cur的值是arr2[0].
const target = acc.find(e => e.id === cur.id); target返回的是在arr1中id与arr2[0].id值相同的对象:即{id:1,name:'23'}
例如var target = [{id:1},{id:2}].find(e=> e.id==1)//target的值为{id:1}
Object.assign(target, cur)//将cur中的值复制到target中,若是相同属性就覆盖,若是不同属性就添加
参考资料:
Object.assign(target,..resources)
例如:Object.assign({id:1,name:'23'},{id:1,car:'car1'})//结果是得到对象{id: 1, name: "23", car: "car1"}
上面if...else...语句的意思就是,在arr1数组中找到了与arr2数组元素相同的id的就合并,没有找到就讲arr2数组的该元素push到arr1数组中,最后得到的acc及arr1与arr2合并后的数组。
var arr2=[{id:1,name:'23'}]var arr1=[{id:1,car:'car2'}]const combined = arr2.reduce((acc, cur) => { const target = acc.find(e => e.id === cur.id);console.log(target) if (target) { Object...
这篇文章主要介绍了JavaScript如何把
两个
数组
对象
合并
过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
合并
数组
或者
对象
在
数组
或
对象
前面加…,是es6的新写法,然后
数组
的map方法会返回
数组
.
var obj1 = [{
id
: 980550455852,
model: XQG70-S1208FW,
color: 白,
invStatusName: 正品,
bactualQty: 10947,
brealyQty: 11000,
bavailQty: 53
注意:arr1 是基础 把arr2
合并
到arr1中 ,汇成一个总的arrs 这个arr1中的
id
和 arr2中的period
Id
是一一对应的。
let arr1 = [
{
id
:64,period:"10:00"},
{
id
:65,period:"12:00"},
{
id
:66,period:"14:00"},
{
id
:67,period:"18:00"},
let arr2 = [
period:'10:00',
period
Id
.
let arr=[{
id
:1,name:'dylan'},{
id
:2,name:'kebi'}]
let arr1=[{
id
:1,position:'ceo'},{
id
:3,position:'sales'}]
let list=arr.reduce((pre,cur)=>{
let target=pre.find(ee=>ee.
id
== cur.
id
)
if(target){
Object.assign(target,cur)
}else{
pre.push(cu
export function getArryMegre(data, keyValue) {
const keySet = new Set(data.map(item => item[keyValue]))
return Array.from(keySet).map(v => {
return {
背景:dbc文件配置 将file
id
一直的signal
合并
在一起
[file
Id
: “239”,signal:{CDU_4:[‘CDU_NavilimitSpdVD’,‘CDU_ICM_ModeSet’]}
[file
Id
: “239”,signal:{TheMessage:[‘TheSignal’]}中
ID
相同
的signal进行
合并
组成新的
数组
[file
Id
: “239”,signal:{TheMessage:[‘TheSignal’],CDU_4:[‘CDU_NavilimitSpdV
可以使用JavaScript中的concat()方法来
合并
两个
数组
。但是,如果
两个
数组
中包含的是
对象
,那么直接使用concat()方法
合并
,只能得到一个新
数组
,而不能实现
对象
的
合并
。因此,需要使用其他的方式来实现
数组
中
对象
的
合并
。
可以使用循环遍历的方式,将第二个
数组
中的
对象
加入到第一个
数组
中。如果第一个
数组
中存在与第二个
数组
中
相同
的
对象
,那么可以选择覆盖或者忽略。
比如,有
两个
数组
arr1和arr2,它们包含的是
对象
obj1和obj2,分别是:
arr1 = [{name:'Tom', age:20}, {name:'Lucy', age:22}];
arr2 = [{name:'John', age:21}, {name:'Tom', age:23}];
为了将arr2中的
对象
合并
到arr1中,可以使用以下代码:
for(var i=0; i<arr2.length; i++){
var isExist = false;
for(var j=0; j<arr1.length; j++){
if(arr2[i].name == arr1[j].name){
arr1[j] = arr2[i]; //如果存在
相同
name的
对象
,就覆盖
isExist = true;
break;
if(!isExist){
arr1.push(arr2[i]); //如果不存在
相同
name的
对象
,就直接加入
执行上述代码后,arr1的结果为:
[{name:'Tom', age:23}, {name:'Lucy', age:22}, {name:'John', age:21}]
可以看到,arr2中的
对象
已经被成功
合并
到arr1中,并且已经实现了
对象
的
合并
。
Chrome报错:Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
35724
Chrome报错:Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
麦田的守望者001:
Fiddler不能抓取Https请求的解决办法
小鳄鱼z:
不能打开.mmap文件的解决办法
weixin_44932025:
Chrome报错:Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.
微笑的小船: