1

我有一個多維數組已經通過CSV文件通過csvlib帶入是否可以輕鬆地在ActionScript中創建索引數組關聯?

我也有一個數組中的標題,我想分配這個數組作爲數組的鍵。

這裏是一個簡化

具有像數據陣列所以

數據[0] - > [0]藍色,[1] 1984年,[2]星期三 [1] - > [0]綠色,[1] 1926,[2]星期五

和鍵的簡單陣列/屬性(頭陣列)像這樣:

[0]的顏色,[1]年,[2]平日

我願意數據[0] - > [顏色]藍色,[年] 1984,[工作日]星期三 [1] - > [顏色]綠色,[年] 1926,[平日]星期五

我已經讀了關聯數組了一點,我沒有得到如何做到這一點。 (有38個屬性,以便記住這是一個索引直陣列將是非常不方便)

回答

1

嗯,你只是想你的第二級陣列是一個簡單的對象,而不是。讓我告訴你一些代碼:

var data:Array = []; 

var record1:Object = {"colour": "blue", "year": "1984", "weekday": "wednesday"}; 
var record2:Object = {"colour": "green", "year": "1926", "weekday": "friday"}; 

data.push(record1); 
data.push(record2); 

trace("record 1:", data[0]["colour"], data[0]["year"], data[0]["weekday"]); 
trace("record 2:", data[1]["colour"], data[1]["year"], data[1]["weekday"]); 

輸出:

record 1: blue 1984 wednesday 
record 2: green 1926 friday

所以我的數據數組轉換成你想要的結構是這樣的:

for (var i:int = 0; i < data.length; i++) { 
    var record:Array = data[i]; 
    var newRecord:Object = {}; 

    for (var index:int in record) 
    newRecord[headers[index]] = record[index]; 

    data[i] = newRecord; 
} 

現在你的數據數組是關聯數組的數組。

1

我假設你的CSV使用;作爲字段分隔符,您使用的URLLoader讀取CSV和加載成功完成。

在你completeHandler,你現在會叫csvToArray(loader.data as String);

private function csvToArray (data : String) : Array 
{ 
    var lines : Array = data.split (/\R/); 
    var keyArray : Array = lines.splice (0, 1)[0].split (";"); 
    var assocArray : Array = []; 
    for each (var line:String in lines) 
    { 
     var valArray : Array = line.split (";"); 
     var assoc : Object = {}; 
     for (var i : int = 0; i < keyArray.length; i++) 
     { 
      var key : String = keyArray[i]; 
      if (key != null && key != "") assoc[key] = valArray[i]; 
     } 
     assocArray.push (assoc); 
    } 
    return assocArray; 
} 

這裏發生了什麼:

  1. 閱讀CSV的第一行到keyArray
  2. 閱讀所有剩餘的行爲valArray
  3. 使用兩種填充assocArray
相關問題