我已经制作了一个多维数组,通过csvlib从CSV文件中引入
我还有一个数组中的标题,我想要一种方法将此数组指定为数组的键。
这是一个简化
有一个像这样的数据数组
data [0] - > [0]蓝色,[1] 1984年,[2]周三 [1] - > [0]绿色,[1] 1926年,[2]周五
和一个简单的键/属性数组(标题数组),如下所示:
[0]颜色,[1]年,[2]工作日
我想插入要制作的按键 数据[0] - > [颜色]蓝色,[年] 1984年,[工作日]周三 [1] - > [颜色]绿色,[年] 1926年,[工作日]周五
我已经阅读了一些关联数组,但我没有得到如何做到这一点。 (这里有38个属性,所以请记住哪个属性在直接索引数组中会非常不方便)
答案 0 :(得分: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 :(得分: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;
}
以下是发生的事情:
keyArray
valArray
assocArray