2014-03-27 73 views
0

我有以下的JSON從PHP腳本如何循環瀏覽此JSON?

var data ={ 
      "first thing" :["1","2"], 
      "second thing" :["5","7"], 
      "third thing" :["8","2"] 
      }; 

我知道,我可以訪問像這樣的項目返回:

console.log(data["first thing"]); 

但是,我需要通過他們迭代,並將它們應用到一些html,並且對象名稱會發生​​變化,所以我如何才能讓循環系統地通過它們並根據需要進行應用?基本上我首先需要遍歷並應用名稱,然後我將再次循環並應用值對。

processResults:function(data){ 
     $('.thisclass').each(function(){ 
      $(this).html('put first json name here, so "first thing"') 
      //then continue to loop through and apply next object name 
     }); 
} 

然後下一個循環我需要做這樣的事情:

processResults:function(data){ 
     $('.nextclass').each(function(){ 
      $(this).html('put first of two values here, so "1"') 
      //then continue to loop through and apply next object value 
     }); 
} 

問題是我不知道該怎麼做,而不在括號標記指定對象的名字!

+3

['for for ... in](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in)或['Object.keys( )'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) – Pointy

+0

https://developer.mozilla.org/en-US/docs/Web /JavaScript/Reference/Statements/for...in –

回答

3

你可以試試這個(因爲它是標記爲jQuery):

$.each(yourObject, function(key, element){ 
    //key will be like "first thing" and so- 
    //element will be an array. 

    //it's true that yourObject[key] == element 
    $.each(element, function(arrayIndex, arrayElement) { 
     //process each arrayElement here 
     //it's true that element[arrayIndex] == arrayElement 
    }) 
}) 
+1

非常好.... :) –

+0

好吧,完美的,現在如果我也想要索引或只是一個普通的對象名稱的計數,我只需要在這裏添加我自己的增量變量還是有其他方法嗎? – absentx

+0

如果你想要索引,arrayIndex在數組中有索引。我沒有寫好代碼,讓我更新它。 arrayIndex是你想要的索引。對'each'的回調需要2個參數:第一個是數組中的索引(如果迭代對象是數組),或者鍵入對象(如果迭代對象不是數組)。添加你自己的計數器將完成這項工作,但是當迭代一個數組時,你已經有了這個計數器作爲第一個參數。編輯:我編輯的代碼。看到它所說的註釋:element [arrayIndex] == arrayElement。 –

1
var data ={ 
    "first thing" :["1","2"], 
    "second thing" :["5","7"], 
    "third thing" :["8","2"] 
}; 

$.each(data, function (key, arr) { 
    console.log(key); 
    var i = 0; 
    for(i; i < arr.length; i++) { 
     console.log(arr[i]); 
    } 
}) 
0

你可以做這樣的事情:

var data ={ 
     "first thing" :["1","2"], 
     "second thing" :["5","7"], 
     "third thing" :["8","2"] 
     }; 
//this will print all the key names 
for (var key in data) { 
    console.log(key); 
} 

//this will print the key values. 
for (var key in data) { 
    console.log(data[key]); 
} 

現在你只需要以使其適應你的需要。