1

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

1) 将数据存储为开、高、低、关、日期的多维数组

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

2)将数据存储为object对象,如下图

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');
4

1 回答 1

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] or data[0]["open"] or 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 是否会导致性能损失,但我使用了大型对象数组,即使在较旧的浏览器上也没有问题。

于 2013-03-05T06:47:44.470 回答