将第二个对象的属性分配给第一个对象(JS)中的每个元素

时间:2018-01-18 12:18:31

标签: javascript jquery

我有合并两个对象的代码

这是代码



  $(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个元素,等等。

我怎么能这样做?

3 个答案:

答案 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覆盖它并将对象分配到对象中。请参阅以下代码段:

&#13;
&#13;
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;
&#13;
&#13;

我将变量名称更改为myArraynewArray,以便您查看自己正在处理的内容。