Javascript jquery合并两个对象
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/10130908/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
jquery merge two objects
提问by Tom
How can I merge jquery objects together
如何将 jquery 对象合并在一起
I have
我有
{
"merchantcontract":"Ready Reserve Foods 10104.01",
"merchantcontractid":"c4253769-5a57-e111-b935-00155d010302",
"smi_transactiondate":"\/Date(1332140400000)\/",
"smi_glamount2":15.2600,
"smi_transactionclass":180870001,
"smi_transactionclassname":"Residual Agent Commission",
"smi_contractprodcutidname":"Traditional",
"smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5",
"smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5"
},
{
"merchantcontract":"Ready Reserve Foods 10104.01",
"merchantcontractid":"c4253769-5a57-e111-b935-00155d010302",
"smi_transactiondate":"\/Date(1332140400000)\/",
"smi_glamount2":2.6000,
"smi_transactionclass":180870001,
"smi_transactionclassname":"Residual Agent Commission",
"smi_contractprodcutidname":"Traditional",
"smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5",
"smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5"
}
I would like to have
我想拥有
{
"merchantcontract":"Ready Reserve Foods 10104.01",
"merchantcontractid":"c4253769-5a57-e111-b935-00155d010302",
"smi_transactiondate":"\/Date(1332140400000)\/",
"smi_glamount2":15.2600,
"smi_transactionclass":180870001,
"smi_transactionclassname":"Residual Agent Commission",
"smi_contractprodcutidname":"Traditional",
"smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5",
"smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5"
},
{
"merchantcontract":"Ready Reserve Foods 10104.01",
"merchantcontractid":"c4253769-5a57-e111-b935-00155d010302",
"smi_transactiondate":"\/Date(1332140400000)\/",
"smi_glamount2":2.6000,
"smi_transactionclass":180870001,
"smi_transactionclassname":"Residual Agent Commission",
"smi_contractprodcutidname":"Traditional",
"smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5",
"smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5"
}
{"merchantcontract":"Ready Reserve Foods 10104.01"{
"merchantcontractid":"c4253769-5a57-e111-b935-00155d010302",
"smi_transactiondate":"\/Date(1332140400000)\/",
"smi_glamount2":15.2600,
"smi_transactionclass":180870001,
"smi_transactionclassname":"Residual Agent Commission",
"smi_contractprodcutidname":"Traditional",
"smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5",
"smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5"
},
{
"merchantcontractid":"c4253769-5a57-e111-b935-00155d010302",
"smi_transactiondate":"\/Date(1332140400000)\/",
"smi_glamount2":2.6000,
"smi_transactionclass":180870001,
"smi_transactionclassname":"Residual Agent Commission",
"smi_contractprodcutidname":"Traditional",
"smi_agentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5",
"smi_primaryagentid":"1d3f44ee-afc3-e011-addf-a4badb1ddef5"
}
}
So both objects are under one object. I may have more than two objects.
所以两个对象都在一个对象下。我可能有两个以上的对象。
The objects are created with each in jquery.
对象是在 jquery 中用每个创建的。
I am not sure how to get started on this.
我不知道如何开始。
回答by adeneo
回答by The Alpha
回答by George Siggouroglou
In case you wish to merge them recursively, $.extendoffers the argument deep
. In case deep=true
the merge become recursively. An example above,
如果您希望递归合并它们,$.extend提供了参数deep
。万一deep=true
合并变成递归。上面的一个例子,
// Initialize two objects.
var json1 = { "a": { "a1": "value1", "a2": "value2" }};
var json2 = { "a": { "a3": "value3" }};
// Merge them recursively.
var newJson = $.extend(true, {}, json1, json2);
// Test it.
if (newJson.a.a1 && newJson.a.a3) {
console.log("Success");
}
回答by Kareem
If you want to update your existing object, use:
如果要更新现有对象,请使用:
$.extend(obj1, obj2); //update obj1 and put all obj2 values in it.
$.extend will change the values of your existing object
$.extend 将更改现有对象的值
To create a new third object that is the sum of both objects, you can use this function
要创建一个新的第三个对象,它是两个对象的总和,您可以使用此函数
function merger_objects(obj1,obj2){
$.each(obj2, function(key, value) {
obj1[key] = value;
});
return obj1;
}
Example
例子
var fruit = {apple:"sweet",graps:"bitter"}
var vege = {cucamber:"bitter",letuce:"bitter"}
var fruit_and_vege = merger_objects(fruit,vege);
//returns {apple:"sweet",graps:"bitter",cucamber:"bitter",letuce:"bitter"}
回答by Evan
can you put them in an array?
你能把它们放在一个数组中吗?
var myObjects = [];
and in your each where they are created just add:
并在您创建它们的每个位置中添加:
myObjects.push(newObject);