这在javascript,多维数组访问或对象访问方面很有效

时间:2013-03-05 06:36:00

标签: javascript

我需要存储股票市场数据以进行操纵。哪个更有效率,

1)将数据存储为多维展示阵列,用于打开,高,低,关闭,日期AS IN

//Data array stored in a array
var tickdata = new Array();
tickdata.push([open,high,low,close,volume,date])

2)将数据存储为对象对象,如下所示

function dailyData(open, high, low, close,volume,date)
{
   this.open = open;
   this.high = high;
   this.low = low;
   this.close = close;
   this.volume=volume;
   this.date=date;
}
var data = new Array();
data[0] = new dailyData(1017.50,1032.50 ,997.50, 1025.40,4187510,'07-Jan-2005');

1 个答案:

答案 0 :(得分:1)

在我看来,第二个更容易维护,因为你可以编辑设置值来改变行为。

第一个选项难以阅读,请考虑以下因素:

function sortData(data,index){
  data.sort(function(a,b){
   if(a[index]>b[index]){return 1;}
   if(a[index]<b[index]){return -1;}
   return 0;
  });
}
sortData(data,0);// sorts on open

其中第二个选项可能更容易阅读:

function sortData(data,index){
  data.sort(function(a,b){
   if(a[index]>b[index]){return 1;}
   if(a[index]<b[index]){return -1;}
   return 0;
  });
}
sortData(data,"open");// sorts on open

特别是如果要对多列进行排序。获取值显然更容易阅读:data [0] [0]或data [0] [“open”]或data [0] .open

可以使用以下方法轻松格式化输出:

function dailyData(open, high, low, close,volume,date){
   //checking if data is valid comes here, maybe setting the
   // right type for the values (like date as date instead of string)
   this.open = open;
   this.high = high;
   this.low = low;
   this.close = close;
   this.volume=volume;
   this.date=date;
   this._dateYear={
      rerurn this.date.getFullYear();
   }
   this.dateYear=this._dateYear();
}

回答(不)回答你的问题:我不确定你是否会使用选项2获得性能损失,但是我使用了大型对象数组,即使在较旧的浏览器上也没有问题。