2015-07-20 49 views
0

我想,我有三个数组:JavaScript的关联数组比较

dict['tag'] = 'INPUT'; 
dict['type'] = 'checkbox'; 
dict['name'] = 'remember' 

dict2['tag'] = 'INPUT2'; 
dict2['type'] = 'checkbox'; 
dict2['name'] = 'remember'; 

dict3['type'] = 'checkboxEdit'; 
dict3['name'] = 'remember' 
dict3['tag'] = 'INPUT3'; 

现在我要实现的是,我想知道数组的元素有多少是平等的,即使数组进行排序,因此例如

function(dict, dict2) return 2 //cause input values are not the same 
function(dict, dict3) return 1 //cause name values are the same 
function(dict2, dict3) return 1 //cause name values are the same 

什么是最有效的方法来实现这一目标?另外数据结构可以改变,所以如果有更好的东西,让我知道。

+1

JavaScript没有 “关联数组”。它有*对象*。 (这将有助于您的搜索。) –

+0

*“也可以更改数据结构,所以如果有更好的东西,请告诉我。”*您可能会更好地使用一组对象,例如。 '[tag:'INPUT',type:'checkbox',name:'remember'},{'tag:'INPUT2','type':'checkbox',name:'remember'},...] (什么是“INPUT2”?) –

+0

Input2不是有效的标签,对此为sry :),但让我们假设它是div :) –

回答

1

这真的很简单..

var dict = {}, dict2 = {}, dict3 = {}; 
 

 
dict['tag'] = 'INPUT'; 
 
dict['type'] = 'checkbox'; 
 
dict['name'] = 'remember' 
 

 
dict2['tag'] = 'INPUT2'; 
 
dict2['type'] = 'checkbox'; 
 
dict2['name'] = 'remember'; 
 

 
dict3['type'] = 'checkboxEdit'; 
 
dict3['name'] = 'remember' 
 
dict3['tag'] = 'INPUT3'; 
 

 
function compare(d1, d2) { 
 
    var count = 0; 
 
    Object.keys(d1).forEach(function (k) { 
 
     if(d1[k] === d2[k]) count++; 
 
    }); 
 
    return count; 
 
} 
 

 
alert(compare(dict, dict2)); 
 
alert(compare(dict, dict3)); 
 
alert(compare(dict2, dict3));