0
我試圖從對象中刪除obects,如果它們出現在其他對象中。真的很難exaplin!這是一個例子。我有2個包含DOM圖像對象的對象,如果它們出現在第二個對象中,我想從第一個對象中刪除DOM圖像對象。從基於重複的對象中刪除jQuery對象
的第一個對象
{
"241": [{
"img": image_object_1
},
{
"img": image_object_2
},
{
"img": image_object_3
},
{
"img": image_object_4
}]
}
二對象
{
"241": [{
"img": image_object_1
},
{
"img": image_object_3
},
{
"img": image_object_4
}]
}
對象的
預期成果1
{
"241": [{
"img": image_object_2
}]
}
我有一個對象都像這樣,但我很高興地改變格式如果需要的話
{
"0": {
},
"1": {
"241.14999389648438": [{
"img": {
image_object_1
},
},
{
"img": {
image_object_2
},
},
{
"img": {
image_object_3
},
},
{
"img": {
image_object_4
},
}]
},
"2": {
"241.14999389648438": [{
"img": {
image_object_2
},
},
{
"img": {
image_object_3
},
},
{
"img": {
image_object_4
},
}]
}
}
我的工作代碼是在這裏
jQuery.fn.reverse = [].reverse;
function same_height(){
var imob = {};
var groups = [];
var heights = [];
var tp = 0;
var img = false;
$("#ez-container .row").each(function(gi){
imob = {};
groups[gi] = {};
heights[gi] = {};
tp = 0;
img = false;
$(this).find(".ez-image img").each(function(){
img = $(this);
tp = img.offset().top;
imob = {
"img":img,
"padding":img.outerHeight(true) - (parseInt(img.css('borderBottomWidth'))+parseInt(img.css('borderTopWidth'))) - img.innerHeight()
};
if(typeof(groups[gi][tp])=="undefined"){
groups[gi][tp] = [];
heights[gi][tp] = [];
}
groups[gi][tp].push(imob);
heights[gi][tp].push(img.height());
});
});
heights.reverse();
var max_group_height = 0;
$.each(groups.reverse(),function(gix,grp){
$.each(grp,function(t,im){
if(im.length>1){
$.each(im,function(i,v){
max_group_height = Math.max.apply(Math, heights[gix][t]);
if(typeof(v.img.attr("data-fixed"))=="undefined"){
v.img.css({"height":max_group_height+(v.padding)+"px"}).attr("data-height",0).attr("data-width",0).attr("data-fixed",1);
}
});
}
});
});
do_swap_images();
}
檢查:http://stackoverflow.com/questions/1187518/ javascript-array-difference –
我可以輕鬆地使用數組來完成它,但對象不一樣。 –
看着你的對象的結構,它看起來可以簡化很多。例如,爲什麼用一個鍵保存一個對象數組(而值是圖像)?您可以直接擁有一組圖像節點。另外,這個'{'0':{...},'1':{...}}'看起來非常像設置遞增索引,並且可以使用數組。這將使得迭代值更容易。 – christian314159