2016-07-13 9 views
0

Gibt es ein Array wie in Datentypen, das nur die letzten 100 Elemente enthält? Oder Wie mache ich das alleine?Javascript Array, das nur die letzten N Elemente enthält

Wir können nur Array von 0 bis x Element, wenn Array-Länge wird mehr als 100, aber das ist ineffizient.

+1

mit anderen Worten, möchten Sie ein Array, dass höchstens 100 Elemente hat, und als weitere Elemente sind hinzugefügt, die ältesten werden entfernt. –

+0

Es gibt keinen integrierten Array-Typ wie diesen. Wie Sie Elemente zum Array hinzugefügt werden. Sie könnten immer Ihre eigene Funktion/Methode zum Hinzufügen eines neuen Elements zum Array erstellen, das es trimmen würde, wenn es zu lang wäre. – jfriend00

+0

Dies wurde bereits ein oder zwei Tage gefragt –

Antwort

0

könnten Sie verwenden push und shift:

var a = []; 

function append(value) { 
    a.push(value); 
    while (a.length > 10) { 
    a.shift(); 
    } 
} 

for (var i = 0; i < 75; i++) { 
    append(i); 
} 

console.log(a); 

// Output: 
// [ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74 ] 
+0

ineffizient, wenn Sie dies viel tun – ElSajko

+1

@ElSajko Im Vergleich zu was? Können Sie Ihre Benchmarking-Methode teilen? – smarx

+0

@ElSajko Wenn Sie nach der Leistung suchen, müssen Sie möglicherweise auch angeben, welche JavaScript-Engine Sie verwenden (Browser oder nicht). Die Leistung von Methoden wie Push und Shift variiert je nach Implementierung erheblich. – smarx

1

Sie einen ring buffer verwenden:

var n = 100; 
var a = new Array(n); 
var i = 0; 

function push(x) { 
    i = (i + 1) % n; 
    a[i] = x; 
} 
+0

Ich schlug vor, auch eine Circular Queue zu verwenden und erhielt sofort einen Downvote: P –

+0

@JackRyan der Unterschied hier ist diese Antwort ist eine Antwort, während Ihre war einfach ein Wegweiser ... zu Java Docs ... das ist Javascript. –

+0

Oh danke @Kevin B! Ich muss den klassischen Fehler gemacht haben, Java zu denken === JavaScript. –

Verwandte Themen