2011-08-19 43 views
0
function countJSONObjByKeyValue(obj, key, value) 
{ 
    var countJSONShows = 0; 
    $.each(obj, function(i, item) 
    { 
     if(obj[i].key == value){ countJSONShows++; } 
    }); 
    alert(countJSONShows); 
} 
countJSONObjByKeyValue("dashboardJSON.widgets", "show", "false"); 

是否有理由認爲沿着上述函數的行可以工作?如果是的話,這個當前的函數有什麼問題/調用它,我可以做到這一點?jQuery按鍵和值計算JSON(可以使用此功能嗎?)

我知道這樣做沒有包裝的功能我可以做到這一點,但我希望這個概念是可重複使用的。

+2

您正在傳遞字符串而不是對象。 – Dogbert

+0

任何洞察如何將它作爲一個對象傳遞呢?導致甚至試圖「dashboardJSON.widgets」沒有引號讓我0計數,當我知道theres至少1目前 – chris

+0

你測試過嗎?我不認爲obj [i] .key會工作,因爲密鑰是一個字符串 – Tsar

回答

1

應該工作,但是你也可以這樣做:

function countJSONObjByKeyValue(obj, key, value) 
{ 
    var countJSONShows = 0; 


    for(x in obj){ 
     if(obj[i].key == value){ countJSONShows++; } 
    } 
    window.alert(countJSONShows); 
} 
countJSONObjByKeyValue(dashboardJSON.widgets, "show", "false"); 

還要注意,OBJ mustnt作爲一個字符串

1

我不知道dashboardJSON.widgets是什麼樣子通過,這樣我就可以沒有把100%的問題告訴你。

但是,一個明顯的問題是您引用密鑰的方式。當使用JSON打交道時,你可以參考的主要有以下兩種方式:

var o = {"foo":"bar"}; 
o.foo; 
o["foo"]; 

你需要做的,因爲你是在傳遞密鑰的字符串值設置了一個param,你需要使用第二種方式:

obj[i][key]