将Javascript对象添加到另一个Javascript对象中

时间:2012-03-23 17:35:19

标签: javascript

鉴于

options = {
 underscored: true
}

products = {
 foo: bar
}

我想得到

products = {
 underscored: true
 foo: bar
}

是否可以在Javascript中将对象推送到另一个对象?

4 个答案:

答案 0 :(得分:28)

<强> ES5

<script>
function mix(source, target) {
   for(var key in source) {
     if (source.hasOwnProperty(key)) {
        target[key] = source[key];
     }
   }

}

  mix(options, products);
</script>

ES6 - 这会改变objectToMergeTo

const combinedObject = Object.assign(objectToMergeTo, source1, source2)

ES7(带扩展运算符的语法美) - 但是这个版本创建了一个新实例,你无法添加到带有扩展运算符的对象中。

const combined = { ...source1, ...source2 }

答案 1 :(得分:5)

你可以这样做:

for(var key in options) {
    products[key] = options[key];
}

这将有效地组合两个对象的变量。

答案 2 :(得分:0)

var options = {
    underscored: true
};
var products = {
    foo: 'bar'
};
products.underscored = options.underscored;
alert(products.underscored+":"+products.foo);

在'bar'周围加上引号,使它实际上有一个值,分号和var对象,但你明白了。

编辑:也值得注意;

products.options = options;
alert(products.options.underscored);//alerts true

答案 3 :(得分:0)

您可以使用jquery.extend(产品,选项)。 jQuery.extend组合了两个对象,重叠了目标对象中的匹配元素值并返回结果对象。有关详细信息:http://api.jquery.com/jquery.extend/