gpt4 book ai didi

javascript - 为什么 jQuery Extend 无法递归复制这两个对象文字?

转载 作者:行者123 更新时间:2023-11-28 20:09:43 24 4
gpt4 key购买 nike

我正在使用 jQuery $.extend 方法来递归合并两个对象,但它没有像我预期的那样工作。 (旁白:这些对象文字采用 CKEditor 配置其工具栏所需的格式。)

预期结果:最大化、ShowBlocks 和源。

实际结果:最大化,显示 block 。

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 的工作原理不同:它将对象的属性从一个对象复制到另一个对象。它无法识别诸如“我看到此数组的这些对象中的‘名称’是相同的,因此我知道要合并‘项目’数组。”之类的内容。

您可能需要编写自己的循环来用 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;
}
}

关于javascript - 为什么 jQuery Extend 无法递归复制这两个对象文字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20101788/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com