2011-10-21 60 views
2

这里是我的工作功能。如何动态创建dataObject? (让我们假设我知道有多少列) 我试着用eval函数动态创建变量的值+ i,但没有成功。Javascript动态哈希创建

function parseCSV(rows){ 
     dataProvider = []; 
     for (var i = 0; i < rows.length; i++){ 
      if (rows[i]) {     
       var column = rows[i].split(","); 
       var date = someFunction(column[0]); 
       var value1 = column[1]; 
       var value2 = column[2]; 
       var dataObject = {date:date, value1:value1, value2:value2}; 
       dataProvider.push(dataObject); 
      } 
     } 
    } 

感谢ü

+0

我不明白你想要它做什么,它还没有做。你最终得到一组对象,每一个对应一行;这怎么不够好?你想要一个对象而不是对象吗?你能告诉我们你尝试过的代码没有用吗? –

+0

你的意思是dataProvider是一个全局变量,而不是在本地声明它,然后从'parseCSV()'函数返回它? – jfriend00

回答

0

如果你不知道你有多少列有,但要创建一个对象全值X's:

var date = someFunction(column[0]); 
var dataObject = {date: date}; 

for (var i=1; i < column.length; i++){ 
    dataObject['value' + i] = column[i]; 
} 

而不是使用value1,...如果可能,您应该尝试使用更多描述性名称。

2

有几种方法。

第一:

var hash = new object(); 
hash["date"] = date; 
hash["value1"] = value1; 
hash["value2"] = value2; 

二:

var hash = {}; 
hash["date"] = date; 
hash["value1"] = value1; 
hash["value2"] = value2; 

三:

var hash = {"date" : date, "value1" : value1, "value2" : value2}; 
+1

不要忘记'hash.myNewValue = 42;' – Bart

+0

hash应该在之前创建。在声明em之前使用变量是一种不好的做法。 – mephisto123