2015-11-18 57 views
0

我想創建一個不會超過5個元素的JavaScript數組,並且將任何溢出的元素作爲隊列刪除。到目前爲止,我最好的想法是重寫數組push方法,並檢查數組的當前長度是否超過5,如果是,在添加元素之後,執行array.splice(0,1)以除去最後一個元素。這是做這件事的正確方法嗎?如何創建最大大小的數組?

+0

'shift()'可能比'splice(0,1)'更高效,但是你的算法看起來很穩定。 –

+0

我想說讓你自己的數組構造函數有5個元素的限制。 – Shinobi881

回答

0

可以這樣的工作?

var myArr = []; 

function arrayPusher(data) { 

    //Add the data to the front of the array. 
    myArr.unshift(data); 

    //After adding the element to the array, 
    //if it is too long, remove the last item. 
    if (myArr.length > 5) { 
    myArr.pop(); 
    } 
} 
0

我看不到的情況下,你失去了控制自己的陣列,但把array.length = 5;在長度檢查功能多simplier。這將在一次移動後的第五個元素之後移除任何東西。

0

嗯,我認爲最好的辦法,是做一個循環,重新使用功能,像這樣:

function onlyN_Elements(N,vector){ 
    if(vector.length<=N){ 
     return vector; 
    }else{ 
     vector.pop(); 
     onlyN_Elements(N,vector); 
    } 
} 

所以總是你想excecute這一點,只是這樣做:

a = [ 2, 3, 4, 5, 6, 7, 8]; //vector 
N = 5      //number of maximun length vector 
onlyN_Elements(N,a);   // just execute the function 

--> output --> console.log(a) --> a = [ 2, 3, 4, 5, 6 ] 

所以如果你想改變你的矢量的最大長度,使用這個函數只需改變'N'。 ;)