2016-11-05 49 views
-2

如果這個問題以前曾被問過,但是我發現很難用以前可能已經問過的方式來提出問題,我很抱歉。幾個大數組,或一個大數組變量?

問:它更有效地碰到這樣的: mass[128] = {0.0} speed[128] = {0.0} age[128] = {0}

或者: properties[128] = {mass=0.0, speed=0.0, age=0}

爲什麼呢?是否有一條簡單的規則需要時刻銘記,(比很多小的更好的陣列更好)?

我在使用Chrome編寫JS。經常閱讀和寫作元素。

非常感謝!

+0

性質[128] =你不保持三個不同的arrays..everything可以看出{質量= 0.0,速度= 0.0,年齡= 0} ..我覺得這是做的最好的做法......有了這個在屬性數組中,所以內存中的一個數組與三個內存中的數組 – Geeky

+1

如果這些示例是有效的JavaScript,這將有所幫助。像mass [128] = {0.0}'這樣的東西可能真的有很多不同的東西。無論如何,我無法想象會有什麼實際的區別。 – JJJ

+0

兩種方法都是SyntaxError,所以它是一樣的。 – Oriol

回答

2

總的來說,這裏的答案是:做什麼最能讓你寫出最簡單,最清晰的代碼;並擔心任何性能或內存問題,如果你真的遇到一個。

使用與命名屬性對象的數組,可能會在對現代JavaScript引擎的訪問時間方面會更有效率,並可能會在內存使用方面效率較低。在這兩種情況下,區別將是令人難以置信的輕微,可能不易察覺。

如果值是數字和你的數組可以是固定大小的,你可以使用typed arrays,因爲他們真的是數組(其中爲normal arrays aren't 除非JavaScript引擎可以做到這一點作爲優化)。但是也有缺點爲鍵入的陣列(其被固定大小,例如),如此反覆,如果和當需要...對象的數組與命名屬性的

實施例:

var properties = [ 
    {mass: 0, speed: 0, age: 0}, 
    {mass: 1, speed: 1, age: 1}, 
    // ... 
]; 

如果你使用ES2015(你說你正在使用Chrome,這樣你就可以),你可能會做一個const

const properties = [ 
    {mass: 0, speed: 0, age: 0}, 
    {mass: 1, speed: 1, age: 1}, 
    // ... 
]; 

只有使得properties恆定的,而不是數組的內容它指向,因此您仍然可以根據需要添加,刪除或修改條目。


這是對我的貧血的小博客的一篇文章。