2013-03-05 43 views
1

我需要存儲股票市場數據的操縱。這是更有效的,這是有效的JavaScript,多維數組訪問或對象訪問

1)存儲數據多維陣列,用於OPEN,HIGH,LOW,CLOSE,日期如

//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

不要擔心這種效率。無論如何,它總是隨着實現而變​​化。做一些最有意義的事情來完成任務。 – 2013-03-05 06:39:49

+0

效率對你來說意味着什麼?高效的空間?訪問時間有效嗎?您可以快速編寫代碼嗎? – 2013-03-05 06:43:45

+0

@ Josiah Hester我的意思是這裏的訪問時間效率..我會做很多訪問..所以將使用作爲對象會有一些開銷..?如果你說這取決於實施..我需要鉻的有效方法 – anandaravindan 2013-03-05 07:30:44

回答

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 

特別是如果要排序的多個列。獲取價值顯然更容易閱讀:

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(); 
} 
:數據[0] [0]或數據[0] [ 「打開」]或數據[0]。開

格式化輸出冷很容易地完成

要(不)回答你的問題:我不確定使用選項2是否會導致性能下降,但我已經使用了大量對象,甚至在較舊的瀏覽器上也沒有問題。