2013-05-31 54 views
-1

我有一個列表和一個DOM對象,我需要比較和獲得不同的價值他們JQuery的 - 如何比較兩個列表

例子:

lista1 = ["type", "name","visible"] 
lista2 = Object {type: "button", name: "button", class: "buttonBlack", visible: "true", backgroundimage: "null"} 

lista2 = Object.keys(list2); 

我嘗試:

for(var i = 0; i<lista1.length;i++) 

    $.each(lista2,function(key,val){ 
     if(lista[i] == val){ 
     list2.remove(val); 
     }  
    }); 
}; 

我想得到它們之間不相等的物品

我如何做到這一點?

預期收益:

["class","backgroundimage"] 
+1

您是否試圖找出數組'list1'中的鍵是否從散列'list2'中丟失? – mgamba

+1

是lista1,lista2 lista,list2完全不同的項目,或者他們是命名約定中的拼寫錯誤。 –

+1

真的不清楚你想要做什麼。請提供更多信息。 –

回答

2
list1 = ["type", "name","visible"] 
list2 = {type: "button", name: "button", class: "buttonBlack", visible: "true", backgroundimage: "null"} 
result = [] 

$.each(list2, function(k,v){ 
    if ($.inArray(k, list1) === -1) { 
    result.push(k) 
    } 
}) 

result 
>> ["class", "backgroundimage"] 
+0

謝謝!,完美工作! :DD – user2403131

1
var list1 = ["type", "name", "class", "visible", "backgroundimage", "disabled", "value"]; 
var list2 = {type: "button", name: "button", class: "buttonBlack", visible: "true", backgroundimage: "null"}; 

list2 = Object.keys(list2); 

function arr_diff(a1, a2) 
{ 
    var a=[], diff=[]; 
    for(var i=0;i<a1.length;i++) 
    a[a1[i]]=true; 
    for(var i=0;i<a2.length;i++) 
    if(a[a2[i]]) delete a[a2[i]]; 
    else a[a2[i]]=true; 
    for(var k in a) 
    diff.push(k); 
    return diff; 
} 

console.log(arr_diff(list1, list2)); 

結果

["disabled", "value"] 

** 基於
Get array of object's keys
JavaScript array difference

DEMO

+0

'a'被視爲一個對象,但被定義爲一個數組。 –

+0

我需要從列表2的密鑰 – user2403131

0
lista1 = ["type", "name","visible"] 
lista2 = Object {type: "button", name: "button", class: "buttonBlack", visible: "true", backgroundimage: "null"} 

result = []; 

for (var prop in lista2) { 
    if (lista2.hasOwnProperty(prop) && lista1.indexOf(prop) < 0) { 
     result.push(prop); 
    } 
} 

數組result將包含不是你的數組中的對象的所有屬性。