鉴于
options = {
underscored: true
}
products = {
foo: bar
}
我想得到
products = {
underscored: true
foo: bar
}
是否可以在Javascript中将对象推送到另一个对象?
答案 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/