2012-07-12 42 views
0

我以jarray的名義創建JSON數組。從java腳本中獲取Json數組的值?

它有id和相應的值。我有另一個變量arr

現在,我如何從使用id的json數組中獲取值的值。

這意味着如果我需要通過使用var id=04來檢查jarray

如果我發現04我需要像Apple這樣的特定id的值作爲輸出。如何在Json數組中使用If條件?

var jarray=[{"id":"04","value":"Apple"},{"id":"13","value":"orange"}]; 
var id=04; 
+0

可能重複[JSON找到在JavaScript中](http://stackoverflow.com/questions/1946165/json-find-in-javascript) – 2012-07-12 13:14:14

+0

你想達到什麼目的? – Neal 2012-07-12 13:14:18

回答

0

像這樣的:

for (i=0;i<jarray.length;i++) 
    { 
     var tempValue = jarray[i]; 
     if (tempValue["id"] == id) 
      alert("value is : " + tempValue["value"]); 
    } 
1

這將返回所有項目的一個數組,其ID爲「04」:

var matches = jarray.filter(function(a){return a.id==id;}); 

如果你肯定只有一個,你可以採取matches[0];

請注意,這可與ID作爲"04"04提供。

爲確保與舊瀏覽器(可能沒有過濾功能)的兼容性,請參閱this

+0

在實踐中,他想檢查'a.id === id'。 @user,注意儘管你的'id'變量不是一個字符串,而是一個數字,你需要將它改爲'var id ='04'' – jackwanders 2012-07-12 13:18:59

+0

它適用於自動轉換:參見http:// jsfiddle。 net/dystroy/Jufga/ – 2012-07-12 13:23:35

+0

是的,但依靠'=='運算符的「靈活性」並不是最佳實踐。最好使用'==='並確保你的值是相同的類型 – jackwanders 2012-07-12 13:40:40

0
var i=0; 
while(i<jarray.length) { 
    if(jarray[i].id==id) { 
    var val=jarray[i].value; 
    break; 
    } 
} 
0

您可以使用類似Underscore's _.find` method,或者自己寫,這可能是更具體到你的情況:

function findId(id, arr, member) { 
    for(i in arr) { 
    // You could use === here depending on your needs 
    if(arr[i]['id'] == id) { 
     return member === undefined ? arr[i] : arr[i][member]; 
    } 
    } 
    return false; 
} 
findId('04', jarray, 'value'); // Apple