我有合并两个对象的代码
这是代码
$(window).on( 'scroll load', function(){
if ($(document).scrollTop() > 250) {
$(".main-pic-bg").fadeIn("slow");
$(".main-pic-bg").fadeIn("slow");
} else {
$(".main-pic-bg").hide("slow");
$(".main-pic-bg").hide("slow");
}
if ($(document).scrollTop() > 650) {
$(".fullscreen-bg-video").hide();
$(".main-pic-bg-title").addClass("load2");
$(".main-pic-bg-content1").addClass("load2");
} else {
$(".fullscreen-bg-video").show("slow");
$(".main-pic-bg-title").removeClass("load2");
$(".main-pic-bg-content1").removeClass("load2");
}
});

它有效,但在新对象中我有两个元素和狗作为3元素。你可以从代码片段看到它。
但是我需要两个带有狗的元素作为属性。因此,食物,汽车和动物将成为物体每个元素的关键。
我怎么能这样做?
更新
用于合并我理解的对象属性的数组,但是如果我有两个像这样的数组
var obj1 = [{ food: 'pizza', car: 'ford'},
{food:'apple',car:'volvo'}];
var obj2 = { animal: 'dog' }
var allRules = Object.assign({}, obj1, obj2);
console.log(allRules);
并希望将其合并为一个1个1个元素的数组,得到2个数组的1个元素,等等。
我怎么能这样做?
答案 0 :(得分:1)
obj1
是一个数组,因此您需要迭代此数组并assign
obj2
到数组中的每个项目。
使用map
var allRules = obj1.map( s => Object.assign({}, s, obj2) );
<强>演示强>
var obj1 = [{ food: 'pizza', car: 'ford'},
{food:'apple',car:'volvo'}];
var obj2 = { animal: 'dog' }
var allRules = obj1.map( s => Object.assign({}, s, obj2) );
console.log(allRules);
修改强>
更新问题
var allRules = obj1.map( (s,i) => Object.assign({}, s, obj2[i]) );
答案 1 :(得分:0)
您需要迭代数组,然后在数组的项目上分配Object.assign()
。
var obj1 = [{
food: 'pizza',
car: 'ford'
},
{
food: 'apple',
car: 'volvo'
}
];
var obj2 = {
animal: 'dog'
}
obj1.forEach(x => Object.assign(x, obj2));
console.log(obj1);
根据评论
var arr1 = [{
food: 'pizza',
car: 'ford'
},
{
food: 'apple',
car: 'volvo'
}
];
var arr2 = [{
animal: 'dog'
},
{
animal: 'cat'
}];
arr1.forEach((item, index) => Object.assign(item, arr2[index]));
console.log(arr1);
答案 2 :(得分:0)
你的第一个对象实际上是一个数组。您可以map
覆盖它并将对象分配到对象中。请参阅以下代码段:
var myArray = [{ food: 'pizza', car: 'ford'},
{ food: 'apple', car: 'volvo'}];
var obj = { animal: 'dog' };
var newArray = myArray.map((o) => Object.assign({}, o, obj));
console.log(newArray);
&#13;
我将变量名称更改为myArray
和newArray
,以便您查看自己正在处理的内容。