3 Stimmen

Entfernen Sie alle Elemente nach einer Position in einem Array von Objekten in Javascript mit splice

Ich frage mich, ob es einen einfachen Weg gibt, alle Elemente nach einer Schlüsselposition auszuschneiden.

array.splice(index,howmany,item1,.....,itemX)

Die Dokumentation besagt, dass das 2. Element, welches die Anzahl der zu entfernenden Elemente angibt, ein Pflichtfeld ist. Gibt es hierbei einen Haken, um dies zu erledigen?

P.S. - Ich suche nicht nach den üblichen mühsamen Lösungen.

9voto

T.J. Crowder Punkte 948310

Ich frage mich, ob es einen einfachen Weg gibt, alle Elemente nach einer Schlüsselposition in einem JSON-Array auszuschneiden.

Wenn es sich um alle Elemente nach einer Schlüsselposition handelt, machst du dies:

array.length = dieSchlüsselposition;

Zum Beispiel:

var array = [
    "eins",
    "zwei",
    "drei",
    "vier",
    "fünf",
    "sechs"
];
var dieSchlüsselposition = 3;
array.length = dieSchlüsselposition; // Entfernt alle Elemente ab "vier"

Wenn du die Schlüsselposition noch nicht kennst, in einer ES5-Umgebung (und das kann eingefügt werden), verwendest du filter:

var array = [
    "eins",
    "zwei",
    "drei",
    "vier",
    "fünf",
    "sechs"
];
var behalten = true;
array = array.filter(function(entry) {
    if (entry === "vier") {
        behalten = false;
    }
    return behalten;
});

Das funktioniert mit Strings, aber du kannst leicht if (entry === "vier") { zu if (entry.someProperty === someValue) { für dein Array von Objekten ändern.

0voto

noob Punkte 18277

Das zweite Argument ist tatsächlich optional für Array.prototype.splice() und das gewünschte Verhalten kann nur mit dem ersten Argument erreicht werden.

Zum Beispiel (kopiert aus der akzeptierten Antwort):

const array = [
    "one",
    "two",
    "three",
    "four",
    "five",
    "six"
];
const theKeyPosition = 3;
array.splice(theKeyPosition+1); // Entfernt alle Elemente ab "four"
console.log(array);

Allerdings bevorzuge ich immer noch das Setzen der Längeneigenschaft, da dies angeblich schneller sein soll (ich kann das JSPerf-Ergebnis nicht finden, bitte hilf mir hier).

Erfahren Sie mehr dazu auf MDN oder in meiner anderen Antwort auf eine ähnliche Frage.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X