2012-04-12 66 views
2

JS Newb here。如何在函數中使用JavaScript哈希作爲參數?

我正在使用一個函數,並且上述函數的文檔中提到「該函數的參數必須是JavaScript哈希,其中鍵是要過濾的(數據庫)字段,並且該值是字符串或一串字符串「。

例子,對我工作:

這些片段的
//New York Knicks fan.... 
viz.filter({CitiesILoathe: ['Boston']}); 
viz.filter({CitiesILoathe: ['Boston','Miami']}); 

無論是對我的工作,從我過濾後,看到()完成去除所述城市。

現在我想直接傳遞一個我之前創建/填充的散列。

無法弄清楚如何。

我已經試過:

var CitiesILoathe= new Object(); //my "hash" 
CitiesILoathe['Boston'] = 1; 
CitiesILoathe['Miami'] = 2; 
viz.filter({CitiesILoathe}); // also tried same thing w/o curly braces 

...但沒有喜悅。我一直在尋找通過文檔,但是我的JavaScript詞彙/智力在這一點上緩慢低下,我真的不知道我在找什麼。

任何人都可以給我一個正確的方向推?非常感謝!

回答

2
//inline declaration 
var CitiesILoath = { 
    "CitiesILoath": [ 
     "Boston" 
     ,"Miami" 
    ] 
} 
viz.filter(CitiesILoath) 

//ad-hoc 
var myFilter = {}; //same as "new Object()" 
myFilter["CitiesILoath"] = []; //same as "new Array()" 
myFilter["CitiesILoath"].push("Boston"); //append to array 
myFilter["CitiesILoath"].push("Miami"); //append to array 

//or, use decimal notation 
var myFilter = {}; //same as "new Object()" 
myFilter.CitiesILoath = []; //same as "new Array()" 
myFilter.CitiesILoath.push("Bostom"); //append to array 
myFilter.CitiesILoath.push("Miami"); //append to array 
viz.filter(myFilter)

其中「Hash」是對象本身.. 「鍵」是字段,在這種情況下是「CitiesILoath」,這些鍵的值是一個數組,填充字符串。

1
var x= { "CitiesILoathe" : [ 
    "Boston", 
    "Miami" 
] }; 
viz.filter(x); 
1

你想一個對象(它的名稱並不重要,所以我把它叫做X),其中有被稱爲CitiesILoathe一個屬性。該屬性是一個數組,所以你可以使用push要添加到它:

var x = {CitiesILoathe: []}; 
x.CitiesILoathe.push('Boston'); 
x.CitiesILoathe.push('Miami'); 
viz.filter(x); 

你也可以做到這一點,如:

var CitiesILoathe = []; 
CitiesILoathe.push('Boston'); 
CitiesILoathe.push('Miami'); 
viz.filter({CitiesILoathe: CitiesILoathe}); 
+0

感謝您的補充說明。讚賞。 – 2012-04-12 20:12:06