我正在努力在JQuery中有效地合并2个数组。本质上我应该合并2个数组但如果存在'元素冲突',则array1优先。我认为我正在做的是一个交叉点,其中array1具有预测性?
我不清楚的是,我是否应该使用2个嵌套$.each()
语句来实现我的目标,或者我是否可以使用$.grep()
或$.filter()
来实现我的目标高效的庄园?有什么建议吗?
下面解释了我在代码中的目标:
var customMenuBtns = [
{
name: 'addText',
callback: ...
},
{
name: 'trash',
callback: function() { // My custom trash callback
console.log("Custom trash");
}
}
];
var defMenuBtns = [
{
name: 'addComponent',
callback: ...
},
{
name: 'trash',
callback: ...
}
];
// Merge customMenuBtns and defMenuBtns.
// If both arrays contain a button with the same name; we discard the
// defMenuBtns and keep the customMenuBtns
// So in the above example; after merging we should have
var menuBtns = [
{
name: 'addText',
callback: ...
},
{
name: 'trash',
callback: function() { // My custom trash callback
console.log("Custom trash");
}
},
{
name: 'addComponent',
callback: ...
}
];
答案 0 :(得分:0)
非jquery解决方案应该起作用并保持秩序。您可能希望添加一些“检查属性名称”步骤,具体取决于您对名称元素的存在的信心。
Locale locale = new Locale("ja", "JP", "JP");
Calendar calendar = Calendar.getInstance(locale);
calendar.set(Calendar.YEAR, 1);
Date date = calendar.getTime();
DateFormat format1
= new SimpleDateFormat("GGGGy年", locale);
System.out.println("y: " + format1.format(date));
DateFormat format2
= new SimpleDateFormat("GGGGyy年", locale);
System.out.println("yy: " + format2.format(date));
DateFormat format3
= new SimpleDateFormat("GGGGyyy年", locale);
System.out.println("yyy: " + format3.format(date));
DateFormat format4
= new SimpleDateFormat("GGGGyyyy年", locale);
System.out.println("yyyy: " + format4.format(date));
答案 1 :(得分:0)
我认为你需要函数$ .extends
var menuBtns = $.extend({}, defMenuBtns, customMenuBtns);
将两个或多个对象的内容合并到第一个对象中。
有关详细信息,请查看jquery文档here 您也可以使用它来将数组与对象合并
我认为你在这里有一个完整的例子
var customMenuBtns = [
{
name: 'addText',
callback: function(){}
},
{
name: 'addComponent',
callback: function(){}
},
{
name: 'trash',
callback: function() { // My custom trash callback
console.log("Custom trash");
}
}
];
var defMenuBtns = [
{
name: 'addText',
callback: function(){}
},
{
name: 'addComponent',
callback: function(){}
},
{
name: 'trash',
callback: function(){}
}
];
var menuBtns = $.extend([], defMenuBtns, customMenuBtns);
console.log(menuBtns);