Javascript 为什么jQueryExtend不能递归地复制这两个对象文本?
我正在使用jQuery$.extend方法对两个对象进行递归合并,但它并没有像我预期的那样工作。(旁白:这些对象文字采用CKEditor配置其工具栏所需的格式。) 预期结果:最大化、显示块和源 实际结果:最大化显示块Javascript 为什么jQueryExtend不能递归地复制这两个对象文本?,javascript,jquery,web,extend,Javascript,Jquery,Web,Extend,我正在使用jQuery$.extend方法对两个对象进行递归合并,但它并没有像我预期的那样工作。(旁白:这些对象文字采用CKEditor配置其工具栏所需的格式。) 预期结果:最大化、显示块和源 实际结果:最大化显示块 var obj1 = [ { name: 'styles', items: ['Format', 'Font', 'FontSize'] }, { name: 'colors', items: ['TextColor', 'BGColor'] }, { na
var obj1 = [
{ name: 'styles', items: ['Format', 'Font', 'FontSize'] },
{ name: 'colors', items: ['TextColor', 'BGColor'] },
{ name: 'tools', items: ['Maximize', 'ShowBlocks'] },
];
var obj2 = [
{ name: 'tools', items: ['Source'] }
];
var recursiveFail = $.extend(true, {}, obj1, obj2);
// Test result here....
alert(recursiveFail[2].items);
问题:为什么没有添加“源”选项?
$.extend
不是这样工作的:它会将对象的属性从一个对象复制到另一个对象。它无法识别诸如“我看到这个数组的这些对象中的‘name’是相同的,所以我知道合并‘items’数组。”
您可能需要编写自己的循环,以使用obj2
来扩充obj1
// Add 'Source' command to the tools group
for (var i = 0; i < obj1.length; i++) {
if (obj1[i].name === 'tools') {
obj1[i].items.push('Source');
break;
}
}
//将“Source”命令添加到工具组
对于(变量i=0;i
$.extend
不是这样工作的:它将对象的属性从一个对象复制到另一个对象。它无法识别诸如“我看到这个数组的这些对象中的‘name’是相同的,所以我知道合并‘items’数组。”
您可能需要编写自己的循环,以使用obj2
来扩充obj1
// Add 'Source' command to the tools group
for (var i = 0; i < obj1.length; i++) {
if (obj1[i].name === 'tools') {
obj1[i].items.push('Source');
break;
}
}
//将“Source”命令添加到工具组
对于(变量i=0;i
$.extend
不是这样工作的:它将对象的属性从一个对象复制到另一个对象。它无法识别诸如“我看到这个数组的这些对象中的‘name’是相同的,所以我知道合并‘items’数组。”
您可能需要编写自己的循环,以使用obj2
来扩充obj1
// Add 'Source' command to the tools group
for (var i = 0; i < obj1.length; i++) {
if (obj1[i].name === 'tools') {
obj1[i].items.push('Source');
break;
}
}
//将“Source”命令添加到工具组
对于(变量i=0;i
$.extend
不是这样工作的:它将对象的属性从一个对象复制到另一个对象。它无法识别诸如“我看到这个数组的这些对象中的‘name’是相同的,所以我知道合并‘items’数组。”
您可能需要编写自己的循环,以使用obj2
来扩充obj1
// Add 'Source' command to the tools group
for (var i = 0; i < obj1.length; i++) {
if (obj1[i].name === 'tools') {
obj1[i].items.push('Source');
break;
}
}
//将“Source”命令添加到工具组
对于(变量i=0;i
$。extend
不打算以这种方式使用
但是,您可以编写自己的扩展/合并函数。下面是一个函数示例,该函数将从多个提供的数组中合并所有被认为相等的对象(基于特定键的值)
以下合并算法将覆盖基元值并连接数组。
初始数组及其对象不会被修改
如果你只需要做一次,这可能会有点过头,不过这是一个如何实现你自己的封装合并算法的例子
$.extend
不应以这种方式使用
但是,您可以编写自己的扩展/合并函数。下面是一个函数示例,该函数将从多个提供的数组中合并所有被认为相等的对象(基于特定键的值)
以下合并算法将覆盖基元值并连接数组。
初始数组及其对象不会被修改
如果你只需要做一次,这可能会有点过头,不过这是一个如何实现你自己的封装合并算法的例子
$.extend
不应以这种方式使用
但是,您可以编写自己的扩展/合并函数。下面是一个函数示例,该函数将从多个提供的数组中合并所有被认为相等的对象(基于特定键的值)
以下合并算法将覆盖基元值并连接数组。
初始数组及其对象不会被修改
如果你只需要做一次,这可能会有点过头,不过这是一个如何实现你自己的封装合并算法的例子
$.extend
不应以这种方式使用
但是,您可以编写自己的扩展/合并函数。下面是一个函数示例,该函数将从多个提供的数组中合并所有被认为相等的对象(基于特定键的值)
以下合并算法将覆盖基元值并连接数组。
初始数组及其对象不会被修改
如果你只需要做一次,这可能会有点过头,不过这是一个如何实现你自己的封装合并算法的例子
您可以从中使用合并方法。检查此答案:
您可以从中使用合并方法。检查此答案:
您可以从中使用合并方法。检查此答案:
您可以从中使用合并方法。检查此答案: