Javascript对象-将对象数组与一些经典对象合并
我正在尝试将javascript中的对象数组与一些经典对象合并。但是我得到了一个奇怪的大对象,有一些对象数组和一些单独的对象,如下所示: 这里是我要合并的两个对象:Javascript对象-将对象数组与一些经典对象合并,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在尝试将javascript中的对象数组与一些经典对象合并。但是我得到了一个奇怪的大对象,有一些对象数组和一些单独的对象,如下所示: 这里是我要合并的两个对象: var object1 = { "5b7973bdce3eb938a6de86a3": { addAt: 1534727291296, quantity: 1 }, "5b7973bdce3eb938a6de86a5": { addAt: 1534727292889, quantity: 1 }, "5b7973bdc
var object1 = {
"5b7973bdce3eb938a6de86a3": { addAt: 1534727291296, quantity: 1 },
"5b7973bdce3eb938a6de86a5": { addAt: 1534727292889, quantity: 1 },
"5b7973bdce3eb938a6de86a7": { addAt: 1534727297106, quantity: 1 }
};
var object2 = [
{
id: "5b7973bdce3eb938a6de86a3",
category: "main dish",
ingredients:
" Peeled groundnuts ↵ Onion, garlic, pepper, salt ↵ Vegetable oil ↵ Ground crayfish ↵ Meat",
price: "5.50"
},
{
id: "5b7973bdce3eb938a6de86a5",
category: "entry",
ingredients:
"1.2kg (2.6 lbs) goat meat (cut with the skin) ↵ 2 …g spoon vegetable oil. ↵ Black pepper (optional)",
price: "6.50"
},
{
id: "5b7973bdce3eb938a6de86a7",
category: "appetizers",
ingredients:
"2 cups of warm water. ↵ 2 tsp. baking powder. ↵ …ar. ↵ 2 tsps. vegetable oil. ↵ Pinch of salt.",
price: "5.00"
}
];
预期结果:
// for each object, merge addAt and quantity with previous object
{
id: "5b7973bdce3eb938a6de86a7",
category: "appetizers",
ingredients:
"2 cups of warm water. ↵ 2 tsp. baking powder. ↵ …ar. ↵ 2 tsps. vegetable oil. ↵ Pinch of salt.",
price: "5.00",
quantity: 1,
addAt: 1534727297106
}
从my console.log获得的结果:
// one big object, not merged
{
0:
{id: "5b7973bdce3eb938a6de86a3", category: "main dish", ingredients: " Peeled groundnuts ↵ Onion, garlic, pepper, salt, maggi ↵ Vegetable oil ↵ Ground crayfish ↵ Meat", price: "5.50", …}
1:
{id: "5b7973bdce3eb938a6de86a5", category: "entry", ingredients: "1.2kg (2.6 lbs) goat meat (cut with the skin) ↵ 2 …g spoon vegetable oil. ↵ Black pepper (optional)", price: "6.50", …}
2:
{id: "5b7973bdce3eb938a6de86a7", category: "appetizers", ingredients: "2 cups of warm water. ↵ 2 tsp. baking powder. ↵ …ar. ↵ 2 tsps. vegetable oil. ↵ Pinch of salt.", price: "5.00", …}
5b7973bdce3eb938a6de86a3:
{addAt: 1534727291296, quantity: 1}
5b7973bdce3eb938a6de86a5:
{addAt: 1534727292889, quantity: 1}
5b7973bdce3eb938a6de86a7:
{addAt: 1534727297106, quantity: 1}
}
对象2=
到目前为止,我已经尝试了这些不同的方法:
Object.keys(this.props.data.compilation).map((key, index) => {
if(this.props.data.compilation[key] === this.props.articles[index]) {
this.props.data.compilation[index].quantity = this.props.articleID[key]["quantity"]
return compilation = Object.assign({}, this.props.data.compilation[key], {
quantity : this.props.articles[index][quantity]
}, {
addAt: this.props.articles[index][addAt]
})
}
})
Object.keys(this.props.data.compilation).map((key, index) => {
if(this.props.data.compilation[key] === this.props.articles[index]) {
this.props.data.compilation[index].addAt = this.props.articleID[key]["addAt"],
this.props.data.compilation[index].quantity = this.props.articleID[key]["quantity"]
}
})
// lodash method
var compilation = _.merge( {}, this.props.data.compilation, this.props.articles)
//lodash method
var compilation = _.assign( {}, this.props.data.compilation, this.props.articles)
他们中没有一个能像我那样工作。
为什么我的对象不能正确合并?任何暗示都很好,
谢谢。只需将object2映射到一个新的对象数组中即可。对于object2中的每个对象,创建一个新对象,该对象与使用id属性检索的object1中的等效对象相融合:
var result = object2.map(o => Object.assign({}, o, object1[o.id]));
例如:
var object1={5b7973bdce3eb938a6de86a3:{addAt:1534727291296,数量:1},5b7973bdce3eb938a6de86a5:{addAt:1534727292889,数量:1},5b7973bdce3eb938a6de86a7:{addAt:1534727297106,数量:1};
var object2=[{id:5b7973bdce3eb938a6de86a3,类别:主菜,配料:去皮花生↵ 洋葱、大蒜、胡椒、盐↵ 植物油↵ 小龙虾↵ 肉,价格:5.50},{id:5b7973bdce3eb938a6de86a5,类别:入口,成分:1.2kg 2.6磅带皮山羊肉↵ 2…g匙植物油。↵ 黑胡椒可选,价格:6.50},{id:5b7973bdce3eb938a6de86a7,类别:开胃菜,配料:2杯温水。↵ 2茶匙发酵粉。↵ …应收账。↵ 2茶匙植物油。↵ 一撮盐,价格:5.00}];
var result=object2.mapo=>Object.assign{},o,object1[o.id];
console.logresult 只需将object2映射到一个新的对象数组中。对于object2中的每个对象,创建一个新对象,该对象与使用id属性检索的object1中的等效对象相融合:
var result = object2.map(o => Object.assign({}, o, object1[o.id]));
例如:
var object1={5b7973bdce3eb938a6de86a3:{addAt:1534727291296,数量:1},5b7973bdce3eb938a6de86a5:{addAt:1534727292889,数量:1},5b7973bdce3eb938a6de86a7:{addAt:1534727297106,数量:1};
var object2=[{id:5b7973bdce3eb938a6de86a3,类别:主菜,配料:去皮花生↵ 洋葱、大蒜、胡椒、盐↵ 植物油↵ 小龙虾↵ 肉,价格:5.50},{id:5b7973bdce3eb938a6de86a5,类别:入口,成分:1.2kg 2.6磅带皮山羊肉↵ 2…g匙植物油。↵ 黑胡椒可选,价格:6.50},{id:5b7973bdce3eb938a6de86a7,类别:开胃菜,配料:2杯温水。↵ 2茶匙发酵粉。↵ …应收账。↵ 2茶匙植物油。↵ 一撮盐,价格:5.00}];
var result=object2.mapo=>Object.assign{},o,object1[o.id];
console.logresult;好的,我把我的代码片段放在可运行状态,然后您可以在这里查看从我的console.log中获取的对象,然后添加方法。this.props.data.compilation和this.props.articles都是对象数组吗?你想合并它们吗?另外请提供一个对象/数组的示例,以及它们合并所需的输出。我已经更新了我的沙盒。好的,我会在我的帖子中放一些例子,不,我认为有一个对象有几个对象,还有一个数组对象好的,我把我的代码片段放在runnable中,然后你可以从这里开始查看对象,我从我的console.log中获取,然后我添加方法。this.props.data.compilation和this.props.articles都是对象数组吗?你想合并它们吗?另外请提供一个对象/数组的示例,以及它们合并所需的输出。我已经更新了我的沙盒。好的,我会在我的帖子里放一些例子,不,我认为有一个对象有几个对象,还有一个数组对象