Ich habe:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Ich möchte in der Lage sein, etwas zu tun wie:
array.remove("B");
Es gibt jedoch keine Entfernungsfunktion. Wie schaffe ich das?
Ich habe:
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
Ich möchte in der Lage sein, etwas zu tun wie:
array.remove("B");
Es gibt jedoch keine Entfernungsfunktion. Wie schaffe ich das?
Antworten:
Ich aktualisiere diesen Thread tatsächlich mit einer neueren 1-Zeilen-Lösung:
let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']
Die Idee besteht im Wesentlichen darin, das Array zu filtern, indem alle Elemente ausgewählt werden, die sich von dem Element unterscheiden, das Sie entfernen möchten.
Hinweis: Entfernt alle Vorkommen.
BEARBEITEN:
Wenn Sie nur das erste Vorkommen entfernen möchten:
t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']
Durchlaufen Sie die Liste in umgekehrter Reihenfolge und verwenden Sie die .spliceMethode.
var array = ['A', 'B', 'C']; // Test
var search_term = 'B';
for (var i=array.length-1; i>=0; i--) {
if (array[i] === search_term) {
array.splice(i, 1);
// break; //<-- Uncomment if only the first term has to be removed
}
}
Die umgekehrte Reihenfolge ist wichtig, wenn alle Vorkommen des Suchbegriffs entfernt werden müssen. Andernfalls erhöht sich der Zähler und Sie überspringen Elemente.
Wenn nur das erste Vorkommen entfernt werden muss, funktioniert auch Folgendes:
var index = array.indexOf(search_term); // <-- Not supported in <IE9
if (index !== -1) {
array.splice(index, 1);
}
0ist nicht automatisch schneller als beispielsweise in C. Solange Sie das Limit zwischenspeichern, würde dies natürlich die Sache komplizieren, wenn Sie nach dem ersten Spiel weitermachen (aber nicht, wenn Sie damit aufhören).
Liste der Einzeiler
Lösen wir dieses Problem für dieses Array:
var array = ['A', 'B', 'C'];
1. Entfernen Sie nur das erste: Verwenden Wenn Sie sicher sind, dass das Element vorhanden ist
array.splice(array.indexOf('B'), 1);
2. Entfernen Sie nur das letzte: Verwenden Sie, wenn Sie sicher sind, dass das Element vorhanden ist
array.splice(array.lastIndexOf('B'), 1);
3. Entfernen Sie alle Vorkommen:
array = array.filter(v => v !== 'B');
Sie müssen den Ort finden, mit dem Sie suchen .indexOf(), und ihn dann mit entfernen.splice()
function remove(arr, what) {
var found = arr.indexOf(what);
while (found !== -1) {
arr.splice(found, 1);
found = arr.indexOf(what);
}
}
var array = new Array();
array.push("A");
array.push("B");
array.push("C");
remove(array, 'B');
alert(array);
Dies wird sich um alle Vorkommnisse kümmern.
Uncaught ReferenceError: array is not defined. Was ist falsch?
.indexOf()ein wenig mehr nutzen. Wenn Sie foundals zweites Argument an den .indexOf()Aufruf innerhalb der while-Schleife übergeben , werden die Elemente im Array, die bereits überprüft wurden und am Ende nicht gleich waren, nicht erneut überprüft: found = arr.indexOf(what, found);
Einfach
array.splice(array.indexOf(item), 1);
-1wenn nichts gefunden wird und whoops, splice löscht 1 Element am Ende des Arrays
Einfache Lösung (ES6)
Wenn Sie kein doppeltes Element haben
Array.prototype.remove = function(elem) {
var indexElement = this.findIndex(el => el === elem);
if (indexElement != -1)
this.splice(indexElement, 1);
return this;
};
Sie müssen schreiben, dass Sie selbst entfernen. Sie können das Array durchlaufen, den Index des Elements abrufen, das Sie entfernen möchten, und es splicezum Entfernen verwenden.
Alternativ können Sie ein neues Array erstellen, das aktuelle Array durchlaufen und das aktuelle Objekt, wenn es nicht mit dem übereinstimmt, was Sie entfernen möchten, in ein neues Array einfügen.
verwenden:
array.splice(2, 1);
Dadurch wird ein Element aus dem Array entfernt, beginnend mit Index 2 (3. Element).
array.splice(2,1)dem 1 Element am Index 2 aus dem Array entfernt wird. Weitere Informationen finden Sie unter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
Verwenden Sie array.splice
/*array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index) // SpiderMonkey/Firefox extension*/
array.splice(1,1)
Quelle: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
arrayund splicemuss ein Punkt sein.
.indexOf()und.splice()sollte den Trick machen. Oder vielleicht alternativ.filter().