javascript - 在 javascript、多维数组访问或对象访问中效率很高

标签 javascript

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

1) 将数据存储为开盘价、最高价、最低价、收盘价、日期的多维数组,如

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

最佳答案

我认为第二个更容易维护,因为您可以编辑设置值来更改行为。

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

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 是否会导致性能损失,但我使用过大型对象数组,甚至在较旧的浏览器上也没有问题。

关于javascript - 在 javascript、多维数组访问或对象访问中效率很高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15217319/

相关文章:

javascript - 忽略出现在引号内的分隔符的 JS split() 函数

javascript - 类外的类变量

javascript - 将 Protractor 用于非 Angular 页面时如何等待页面加载或元素出现

javascript - 如何使用 Jquery 搜索带有 javascript 运算符符号的表单列?

javascript - Typescript 通过多个关键字过滤具有字符串数组的对象数组

javascript - 在 iOS 移动浏览器中请求位置权限弹出窗口

javascript - 使用javascript触发输入框的pattern属性?

javascript - 如何在表单提交前等待3秒?

javascript - CSS 不适用于 Javascript 创建的元素

javascript - 使用 "eventEmitter"将 "super"扩展到我的类(class)时,this.name 返回 undefined