合并javascript中具有不同属性数的两个数组
我有两个javascript数组,它们的属性数不同,如下所示 阵列1 数组2 我想合并这两个数组,并根据日期创建一个数组。 结果数组应如下所示合并javascript中具有不同属性数的两个数组,javascript,arrays,Javascript,Arrays,我有两个javascript数组,它们的属性数不同,如下所示 阵列1 数组2 我想合并这两个数组,并根据日期创建一个数组。 结果数组应如下所示 var resultArray = [{ 'name': 'A', 'date': "May-31-2012", 'value1': 56, 'value2': 26 }, { 'name': 'A', 'date': "Jun-05-2014", 'value1': 36, 'valu
var resultArray = [{
'name': 'A',
'date': "May-31-2012",
'value1': 56,
'value2': 26
}, {
'name': 'A',
'date': "Jun-05-2014",
'value1': 36,
'value2' :0
},{
'name': 'A',
'date': "Jun-05-2015",
'value1': 0,
'value2' :78
}, {
'name': 'A',
'date': "Nov-28-2015",
'value1': 29,
'value2': 560
}, {
'name': 'A',
'date': "Dec-01-2016",
'value1': 0,
'value2' : 56
},{
'name': 'A',
'date': "Dec-01-2016",
'value1': 0,
'value2' : 56
},{
'name': 'A',
'date': "Dec-04-2016",
'value1': 0,
'value2' : 56
}];
请提出建议。这将对您有所帮助
var resultArray = arrFirst.concat(arrSecond);
您可以使用非给定属性的默认值创建新对象,迭代给定数据,并使用哈希表为同一日期赋值 然后按日期对结果数组进行排序 var arrFirst=[{name:'A',日期:2012年5月31日,value1:56},{name:'A',日期:2014年6月5日,value1:36},{name:'A',日期:2015年11月28日,value1:29},{name:'A',日期:2017年12月1日,value1:58}], ARRSHOND=[{日期:2012年5月31日,价值2:26},{日期:2015年6月5日,价值2:78},{日期:2015年11月28日,价值2:560},{日期:2016年12月1日,价值2:56},{日期:2016年4月4日,价值2:36}], 合并=[arrFirst,arrSecond]。还原函数哈希{ 返回函数r,a{ a、 foreacho函数{ 如果!散列[o.date]{ hash[o.date]={date:o.date,name:'A',value1:0,value2:0}; r、 pushhash[o.date]; } Object.keyso.foreachk函数{ 散列[o.date][k]=o[k]; }; }; 返回r; }; }Object.createnull,[]; merged.sort函数a、b{ 函数getISODates{ 变量月份={1月1日、2月2日、3月3日、4月4日、5月5日、6月6日、7月7日、8月8日、9月9日、10月10日、11月11日、12月12日}; 返回s.slice7,11+'-'+月[s.slice0,3]+'-'+s.slice4,6; } 返回getISODatea.date.localeComparegetISODateb.date; }; console.logmerged;
.作为控制台包装{最大高度:100%!重要;顶部:0;}您可以使用下面的函数合并2个数组
var arrFirst = [{
'name': 'A',
'date': "May-31-2012",
'value1': 56
}, {
'name': 'A',
'date': "Jun-05-2014",
'value1': 36
}, {
'name': 'A',
'date': "Nov-28-2015",
'value1': 29
}, {
'name': 'A',
'date': "Dec-01-2017",
'value1': 58
}];
var arrSecond = [{
'date': "May-31-2012",
'value2': 26
}, {
'date': "Jun-05-2015",
'value2': 78
}, {
'date': "Nov-28-2015",
'value2': 560
}, {
'date': "Dec-01-2016",
'value2': 56
}, {
'date': "Dec-04-2016",
'value2': 36
}];
function mergeArrays(arr1, arr2) {
var a1 = [];
if(arr1 && arr2) {
if(arr1.length >= arr2.length) {
arr1.forEach(function(e, k, i) {
a1.push(k);
a1[k] = [];
a1[k] = merge(e, arrSecond[k]);
});
} else {
arr2.forEach(function(e, k, i) {
a1.push(k);
a1[k] = [];
a1[k] = merge(e, arrFirst[k]);
});
}
} else {
if(arr1) {
a1 = arr1;
}
if(arr2) {
a1 = arr2;
}
}
return a1;
}
function merge(arr1, arr2) {
if(arr1 && arr2) {
return Object.assign(arr1, arr2);
} else {
if(arr1) {
return arr1;
}
if(arr2) {
return arr2;
}
}
}
console.log(mergeArrays(arrFirst, arrSecond));
然后将这两个数组放入mergeArraysarrFirst、arrSecond等合并数组中;它会给你合并的结果
你可以在这里看到现场演示
希望这对你有所帮助分享你的研究对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!还要看看是否由我决定,我会使用日期作为“键”,迭代两个数组来创建一个新数组,并用正确的属性填充数组。是否可以使用javascript日期对象?可以将这些数据进行比较,以获得后一个日期。这将比排序那些字符串少很多工作。
var resultArray = arrFirst.concat(arrSecond);
var arrFirst = [{
'name': 'A',
'date': "May-31-2012",
'value1': 56
}, {
'name': 'A',
'date': "Jun-05-2014",
'value1': 36
}, {
'name': 'A',
'date': "Nov-28-2015",
'value1': 29
}, {
'name': 'A',
'date': "Dec-01-2017",
'value1': 58
}];
var arrSecond = [{
'date': "May-31-2012",
'value2': 26
}, {
'date': "Jun-05-2015",
'value2': 78
}, {
'date': "Nov-28-2015",
'value2': 560
}, {
'date': "Dec-01-2016",
'value2': 56
}, {
'date': "Dec-04-2016",
'value2': 36
}];
function mergeArrays(arr1, arr2) {
var a1 = [];
if(arr1 && arr2) {
if(arr1.length >= arr2.length) {
arr1.forEach(function(e, k, i) {
a1.push(k);
a1[k] = [];
a1[k] = merge(e, arrSecond[k]);
});
} else {
arr2.forEach(function(e, k, i) {
a1.push(k);
a1[k] = [];
a1[k] = merge(e, arrFirst[k]);
});
}
} else {
if(arr1) {
a1 = arr1;
}
if(arr2) {
a1 = arr2;
}
}
return a1;
}
function merge(arr1, arr2) {
if(arr1 && arr2) {
return Object.assign(arr1, arr2);
} else {
if(arr1) {
return arr1;
}
if(arr2) {
return arr2;
}
}
}
console.log(mergeArrays(arrFirst, arrSecond));