好的,我已经在我的例子中尝试了在stackoverflow上找到的几个例子,但没有任何东西可以帮助我。我有一个包含12个对象的数组,看起来像这样
var buttons = [ {"tag":"adr","color":"#123456"},
{"tag":"ag","color":"#123456"},
{"tag":"fax","color":"#123456"},
{"tag":"ind","color":"#123456"},
{"tag":"sname","color":"#123456"},
{"tag":"per","color":"#123456"},
{"tag":"tel","color":"#123456"},
{"tag":"url","color":"#123456"},
{"tag":"url","color":"#123456"},
{"tag":"weblink","color":"#123456"},
{"tag":"weblink","color":"#123456"},
{"tag":"close","color":"#123456"} ];
我想把它推到另一个数组var buttonsP
,如果它不在那个数组中的话。我尝试使用jquery .grep
选项(以及其他示例):
var buttonsP =[];
for (var i = 0; i < buttons.length; i++){
var newObject = { "valueTagP": buttons[i].tag, "colorTagP": buttons[i].color };
if( $.grep(buttonsP, function(obj) { return obj.valueTagP != buttons[i].tag; }) ){
buttonsP.push(newObject);
}
}
for (var i = 0; i < buttonsP.length; i++){
$(".list").append("<li>"+ buttonsP[i].valueTagP + ", " + buttonsP[i].colorTagP +"</li>");
}
但没有删除重复项。
您可以在此处查看和修改我的情况:http://jsfiddle.net/M4mA9/
我做错了什么?
答案 0 :(得分:2)
$.grep
将根据条件返回匹配的数组。您可以在http://api.jquery.com/jquery.grep/
您的代码应该像
var newObject = { "valueTagP": buttons[i].tag, "colorTagP": buttons[i].color };
var newArr = $.grep(buttonsP, function(obj) {
return obj.valueTagP === buttons[i].tag;
});
if(newArr.length === 0) {
buttonsP.push(newObject);
}
我修改了您的代码并更新了fiddle
答案 1 :(得分:1)
我假设 buttonsP 仅包含按钮。
在那种情况下,
而不是将按钮设为数组,将其设为
对象var buttons = {key : "some_unique_key",
value: /*put your buttons array here*/}
现在 buttonsP 将包含按钮对象(不是按钮数组)
现在,您可以根据键轻松找到阵列中的按钮对象(确保它是唯一的) 并插入,如果它不存在。
答案 2 :(得分:1)
var buttonsP = $.grep(buttons, function (obj, i) {
var m = buttons.filter(function (v) {
return v.tag === obj.tag;
})[0];
return $.inArray(m, buttons) === i;
});
答案 3 :(得分:0)
如果您可以使用JQuery,请尝试:
var a1 = ["Cecilie", "Lone"];
var a2 = ["Cecilie", "Emil"];
var b = $.unique($.merge($.merge([], a1), a2));