jQuery Deep/Recursive Copy using $.extend
我正在尝试使用jquery$.extend合并两个对象。
使用以下代码,我试图提醒("球-树桩-裁判")。但电流输出是("未定义-树桩裁判")。它不实现深度(递归)复制。我们如何纠正这个问题?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $(document).ready(function () { debugger; //$.extend var obj3 = { throwable: { text1: 'Ball' }, text3: 'Umpire' }; var obj4 = { throwable: { text4: 'Bat' }, text2: 'Stump' } //Simple Copy var result1 = $.extend(obj3, obj4); //alert(result1.throwable.text4 +" -" + result1.text2 +" -" + result1.text3); //Deep Copy //First parameter is passed as Boolean true to accomplish deep (recursive) copy var result2 = $.extend(true, obj3, obj4); alert(result2.throwable.text1 +" -" + result2.text2 +" -" + result2.text3); }); |
编辑:我提到
(深)使用jquery复制数组
第二个是你的代码和执行的工作位置A到
问题是,以前的代码是一个有
最初,
obj3 是:1{ throwable: { text1: 'Ball' }, text3: 'Umpire' }安切洛蒂的第一代码运行后,
obj3 变成:1{ throwable: { text4: 'Bat' }, text3: 'Umpire', text2: 'Slump' }最后,将第二代码运行后,
obj3 安静是:1{ throwable: { text4: 'Bat' }, text3: 'Umpire', text2: 'Slump' }
问题是,这两个有相同的属性在对象名字:1。扩展jQuery扩展适用于深,不合并成一个新的字符串连接在或阵列。
深拷贝是相关的,如果你的一个属性是另一个对象。与深部延伸,所有的对象属性的get和儿童出现不只是孩子对象本身。
我想你要走你自己的扩展功能。
在你的代码,
什么样:
1 2 3 4 5 6 | function(o1, o2) { var ores = {}; for(var p in o1) ores.p = o1.p; for(var p in o2) ores.p = ores.p ? ores.p+o2.p : o2.p; return ores; } |