2012-04-19 136 views
2

我公司目前有以下陣列設置:輸出多維數組

var TicketInfo = 
    { 
     t1: { 
      1: [7, 12, 35,39,41, 43], 
      2: [7, 15, 20,34,45, 48], 
      3: [3, 7, 10, 13, 22, 43], 
      4: [2, 4, 5,23,27, 33] 
     }, 
     t2: { 
      1: [10, 12, 17,44,48, 49], 
      2: [13, 15, 17, 18, 32, 39], 
      3: [16, 17, 20, 45, 48, 49], 
      4: [6, 16, 18, 21, 32, 40] 
     } 
     } 

我想要做的就是通過這些迭代帶回陣列下。

作爲一個測試,我已經試過這樣的事情:

for(t in TicketInfo["t1"]) 
{ 
    i++; 
     Write(t.i); 
} 

但它顯然沒有工作,我怎麼想它。

任何想法?

我希望能夠輸出數組一樣[7, 12, 35,39,41, 43]

感謝

+0

在你寫,從寫(TI)的變化寫(T [1])。 t [i]會按照你的要求給你相應的數組 – smhnkmr 2012-04-19 09:10:40

回答

8
var TicketInfo = 
{ 
    t1: { 
     1: [7, 12, 35,39,41, 43], 
     2: [7, 15, 20,34,45, 48], 
     3: [3, 7, 10, 13, 22, 43], 
     4: [2, 4, 5,23,27, 33] 
    }, 
    t2: { 
     1: [10, 12, 17,44,48, 49], 
     2: [13, 15, 17, 18, 32, 39], 
     3: [16, 17, 20, 45, 48, 49], 
     4: [6, 16, 18, 21, 32, 40] 
    } 
} 

for(var j in TicketInfo) 
{ 
    for(var p in TicketInfo[j]) 
    { 
     for(var i = 0; i < TicketInfo[j][p].length; i++) 
     { 
      console.log(TicketInfo[j][p][i]); 
     } 
    } 
}​ 

http://jsfiddle.net/J6rTj/

1

語法TicketInfo["t1"]["1"][0]

這個例子會給你7

TicketInfo["t1"]["1"]會給你你在問題的基礎之後的數組。

0

在您的代碼t只是代表的關鍵。

嘗試下面的代碼:

var TicketInfo = 
    { 
     t1: { 
      1: [7, 12, 35,39,41, 43], 
      2: [7, 15, 20,34,45, 48], 
      3: [3, 7, 10, 13, 22, 43], 
      4: [2, 4, 5,23,27, 33] 
     }, 
     t2: { 
      1: [10, 12, 17,44,48, 49], 
      2: [13, 15, 17, 18, 32, 39], 
      3: [16, 17, 20, 45, 48, 49], 
      4: [6, 16, 18, 21, 32, 40] 
     } 
} 

for(t in TicketInfo["t1"]) 
{ 
    i++; 
     console.log(TicketInfo["t1"][t]); 
} 
0

難道我明白,你想輸出整個表順序?由於您在t1/t2級別使用對象,因此您必須爲此執行額外步驟。

首先,看你能不能簡單地用真正的數組替換對象:

var TicketInfoArrays = { 
    t1: [ 
     [7, 12, 35,39,41, 43], 
     [7, 15, 20,34,45, 48], 
     [3, 7, 10, 13, 22, 43], 
     [2, 4, 5,23,27, 33] 
    ] 
} 


var t1 = TicketInfoArrays.t1 

for(var idx = 0, len = t1.length; idx<len; idx++){ 
    var line = idx+": [" 
    var nested = t1[idx] 
    for(var idx2 = 0, len2 = nested.length; idx2<len2; idx2++){ 
     line += ((idx2 > 0 ? ', ':'') + nested[idx2]) 
    } 
    console.log(line + ']') 
} 

如果真是莫名其妙不可能的,但你肯定在這些對象中鍵始終在某個特定數量的開始,去無間隙上升,你可以簡單地itreate了屬性,直到你打空元素:

var TicketInfo = { 
    t1: { 
     1: [7, 12, 35,39,41, 43], 
     2: [7, 15, 20,34,45, 48], 
     3: [3, 7, 10, 13, 22, 43], 
     4: [2, 4, 5,23,27, 33] 
    } 
} 

var t1 = TicketInfo.t1 

var idx = 1 
var nested 
while(nested = t1[idx]){ 
    var line = idx+": [" 
    var nested = t1[idx] 
    for(var idx2 = 0, len2 = nested.length; idx2<len2; idx2++){ 
     line += ((idx2 > 0 ? ', ':'') + nested[idx2]) 
    } 
    console.log(line + ']') 
    idx++ 
} 

最後,如果你不能保證,甚至,你必須手動收集所有鑰匙,對它們進行排序,然後遍歷這個排序列表。

var TicketInfoUnordered = { 
    t1: { 
     8: [7, 12, 35,39,41, 43], 
     20: [7, 15, 20,34,45, 48], 
     45: [3, 7, 10, 13, 22, 43], 
     3: [2, 4, 5,23,27, 33] 
    } 
} 

var t1 = TicketInfoUnordered.t1 

var keys = [] 
for(key in t1){ 
    if(t1.hasOwnProperty(key)){ keys.push(key) } 
} 
keys.sort(function(a, b){ return a - b }) 

for(var idx = 0, len = keys.length; idx<len; idx++){ 
    var line = keys[idx]+": [" 
    var nested = t1[keys[idx]] 
    for(var idx2 = 0, len2 = nested.length; idx2<len2; idx2++){ 
     line += ((idx2 > 0 ? ', ':'') + nested[idx2]) 
    } 
    console.log(line + ']') 
} 
5

如果從谷歌在這裏試圖找到一種方式做用於調試的快速打印,這裏是一個班輪你:

console.log(myArray.join("\n")) 

例子:

var myArray = [[1,2,3],[4,5,6],[7,8,9]]; 
console.log(myArray.join("\n")); 

輸出:

1,2,3 
4,5,6 
7,8,9 

帶正確支架的示例S:

var myArray = [[1,2,3],[4,5,6],[7,8,9]]; 
console.log("[[" + myArray.join("],\n[") + "]]"); 

輸出:

[[1,2,3], 
[4,5,6], 
[7,8,9]] 

答到OP的問題:

obj = { 
    1: [7, 12, 35,39,41, 43], 
    2: [7, 15, 20,34,45, 48], 
    3: [3, 7, 10, 13, 22, 43], 
    4: [2, 4, 5,23,27, 33], 
} 
var keys = Object.keys(obj); 
keys.sort(); 
console.log(keys); 
var listFromObj = [] 
for (var i = 0; i < keys.length; i++) { 
    if (obj.hasOwnProperty(keys[i])) listFromObj.push(obj[keys[i]]); 
} 
console.log("[" + listFromObj.join("]\n[") + "]"); 

輸出:

[7,12,35,39,41,43] 
[7,15,20,34,45,48] 
[3,7,10,13,22,43] 
[2,4,5,23,27,33]