我有N条数据需要循环获取,并且合并到同一个对象里,现在使用Object.assign方法会导致他循环覆盖掉之前获取到的内容,需要怎么写才能不覆盖?
我现在代码是这样的,比如循环100次,获取100条数据,结果全被覆盖了,只留下来最后一条数据
for (i = 0; i < 100; i++) {
data = Object.assign(data,{a:{"b":b,"c":{"c1":c1,"c2":c2}}});
}
我数据表大概是这样的,并且数据还在继续增加,所以必须要用循环调用出来,然后赋值到变量里
想要的结果是 每次循环获取1行数据,然后把获取到的每行数据合并到一个对象里
遇到同一个变量a,会嵌套不同的变量b的内容进去,而不是覆盖
并且变量 a,b,c 由于数据的更新,数据都可能会持续增加,不限于仅3个公司4个规格,可能会更多
想要合并后的结果是下面这样的,全部数据在一个对象里
{
公司1:{
规格1:{
价格:{
c1:101,
c2:201,
c3:301,
c4:401
}
}
规格2:{
价格:{
c1:102,
c2:202,
c3:302,
c4:402
}
}
规格3:{
价格:{
c1:103,
c2:203,
c3:303,
c4:403
}
}
规格4:{
价格:{
c1:104,
c2:204,
c3:304,
c4:404
}
}
}
公司2:{
规格1:{
价格:{
c1:91,
c2:191,
c3:291,
c4:291
}
}
规格2:{
价格:{
c1:92,
c2:192,
c3:292,
c4:292
}
}
规格3:{
价格:{
c1:93,
c2:193,
c3:293,
c4:293
}
}
规格4:{
价格:{
c1:94,
c2:194,
c3:294,
c4:294
}
}
}
公司3:{
规格1:{
价格:{
c1:71,
c2:171,
c3:271,
c4:271
}
}
规格2:{
价格:{
c1:72,
c2:172,
c3:272,
c4:272
}
}
规格3:{
价格:{
c1:73,
c2:173,
c3:273,
c4:273
}
}
规格4:{
价格:{
c1:74,
c2:174,
c3:274,
c4:274
}
}
}
}
你需要的东西称为 Merge,在很多配置文件里都有这样的操作,以便定义不同层次的配置并合并使用。
如果想要自己实现,需要递归进行一层一层的合并。这里建议直接使用 Lodash 的 merge 方法。直接点链接进去看,我就不多说了。