如何解决如何基于同一日期合并两个对象数组
实际上,我想将具有相同日期的所有产品合并到以下相同的对象中,我尝试了很多算法,但没有用,所以这就是为什么我发表这篇文章。您可以找到数据示例和预期结果。
let obj = {}; for(let i = 0; i < this.data.length; i++){ let date = this.data[i].Date; let p_date = obj[date] || {}; obj[date] = Object.assign(p_date,this.data[i]); } let result = Object.values(obj); return result;
this.data = [
{
"Date": "12/06/2019","Rank": 1,"ASIN": "B01N9J7MLI","rating": "4,1","Reviews": 4592,"Price": "114,99","Prime": "No"
},{
"Date": "12/06/2019","Rank": 2,"ASIN": "B074QXGBG6","rating": 4,"Reviews": 29163,"Price": "60,"Prime": "No"
}];
预期结果:
this.data = {
"Date": "12/06/2019","Products": [
{
"Date": "12/06/2019","Prime": "No"
},{
"Date": "12/06/2019","Prime": "No"
}
],}
感谢您的回答
解决方法
使用Array#reduce将数据累积到具有日期属性的对象。 Foreach对象查看累积对象中是否存在具有该日期的属性。如果没有,请使用日期属性和产品(带有空数组)创建它。在这两种情况下,都将当前对象添加到该数组中。
最后,使用Object.values从对象中获取值以获取所需的数组。
this.data = [
{
"Date": "12/06/2019","Rank": 1,"ASIN": "B01N9J7MLI","Rating": "4,1","Reviews": 4592,"Price": "114,99","Prime": "No"
},{
"Date": "12/06/2019","Rank": 2,"ASIN": "B074QXGBG6","Rating": 4,"Reviews": 29163,"Price": "60,"Prime": "No"
}];
let res = Object.values(this.data.reduce((acc,cur) => {
if (!acc[cur.Date])
acc[cur.Date] = {Date: cur.Date,Products: []};
acc[cur.Date].Products.push(cur);
return acc;
},{}));
console.log(res);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。