2011-01-12 166 views
2

我的javascript代碼:是否可以縮短此代碼?

var newPositions = new Array(count); 
       for (var i = 0; i < count; i++) { 
        newPositions[i] = i; 
       } 

是否有可能從0初始化數組數更快速地(在一個在線我的意思)?
UPD: 計數是一個數字,可以在執行時間不同

UPD2:不認爲有關算法,只寫在一行此代碼的方式。 作爲@馬丁耶斯佩森建議和冒用刪除答案:

for (var i = 0, newPositions = []; i < count; newPositions[i] = i++) 
+1

看起來很容易 – hunter 2011-01-12 13:50:25

+0

計數是從哪裏來的?它有什麼價值? – fredrik 2011-01-12 13:50:45

+0

@ hunter:我重命名我的主題以符合我的意思) – Kai 2011-01-12 14:01:40

回答

4
for (var i = 0,newPositions=[]; i < count; i++) { 
    newPositions[i] = i; 
} 
1

沒有,沒有優化的方式,更多的:)

0

如果count始終是一個已知數,那麼語法創建在1行JavaScript陣列是

var myArray = [0,1,2,3,4,5,6,7]; //assuming count was 8 
0

智能屁股的答案是:

for (var i = 0; i < count; i++) newPositions[i] = i; 

但是更好的答案(或問題)是:爲什麼這個數組對你有用?該數組保存的值可以在運行中輕鬆計算。隨着更多的信息,我們可以給你一個更好的答案。

0

不容易,我害怕,除非你在al Jamy使用與Jamiec的答案相同的計數。

var newPositions = []; 
while(count-- > 0) 
    newPositions[count] = count; 

這是一個短一點,但相同的代碼,除了它改變cout所以也許使用臨時var fpor,而不是。

1

這就像是'容易',因爲它可以做你想做的事情;唯一可能的優化是把數組初始化成一個函數,就像這樣:

function range(count) { 
    var countArray = new Array(count); 
    for(var i = 0; i < count; i++) { 
     countArray[i] = i; 
    } 
    return countArray; 
} 

然後將其分配給您的變量:

​​

只有當你需要做的優化是一個合理的數字的時間,以說明編碼該功能花費的額外時間。如果它只做了一次,那麼它就像它將要獲得的一樣好。

作爲一種旁白,由於您的for循環的設置方式,您將newPositions從0初始化爲count-1,而不是0進行計數。如果要在數組中包含count值,請在for循環中將i < count更改爲i <= count