2017-07-05 7 views
0

Ich versuche, ein bestimmtes Element aus einem Array in JavaScript mit splice() -Funktion zu entfernen, aber ich kann das Zielelement nicht löschen.Spleiß() Funktion funktioniert nicht wie erwartet

var a = []; 
    a.push("cs"); 
    a.push("ac"); 
    var curr2 = a.indexOf("ac"); 
    if(curr2 != -1){ 
     a = a.splice(curr2,1); 
    } 
    console.log(a); 

Erwartetes Ergebnis: [ "cs"] Tatsächliches Ergebnis: [ "ac"]

Kann jemand dieses Verhalten erklären. Vielen Dank!

+1

neu zugewiesen wurden, habe ich das Verständnis, dass 'splice()' Ihr Array betrifft und nicht Assasses Ergebnis an das gleiche Array zuweisen müssen, denn wenn Sie dies tun zuweisen der entfernte Wert zu Ihrem Array, in Ihrem zweiten Beispiel entfernen Sie den Teil 'a =' und Sie werden sehen, was ich meine, und Ihr erstes Beispiel gibt ["2"] nicht ["1"] https://jsfiddle.net/lixusrarnavo/166ug1tk/ – Lixus

+0

haben es geschafft. Vielen Dank!!! –

+0

Es funktioniert wie erwartet, durch ** Sie ** erwarten die falsche Sache. –

Antwort

3

Das ist, weil Splice die Elemente zurück, die Sie entfernt.

dass Splice Denken Sie daran, modifiziert das ursprüngliche Array so, wenn Sie

a = a.splice(curr2,1); 

Sie machen entfernt, um die Elemente zu speichern.

Ersetzen Sie diese Zeile mit

a.splice(curr2,1); 

Und das sollte Ihr Problem lösen!

0

Sie Code zieht 1 Element aus dem Array bei Index beginnend 1:

var a = []; 
 
a.push("cs"); 
 
a.push("ac"); 
 
var curr2 = a.indexOf("ac"); 
 
console.log("curr2 = " + curr2); 
 
// curr2 = 1; 
 
if (curr2 != -1) { 
 
    var b = a.slice(); 
 
    b.splice(curr2, 1); 
 
    console.log(b); 
 
    // ["ac"] 
 
    var c = a.slice(); 
 
    c.splice(1, 1); 
 
    console.log(c); 
 
    // ["ac"] 
 
} 
 

0

splice gibt das Element zurück, das Sie in einem Array gelöscht haben. Kurz gesagt, ändern Sie a = a.splice(curr2,1); zu a.splice(curr2,1); und Ihr Code wird wie erwartet funktionieren. Da splice das Array ändert, erhalten Sie ein Array ohne das gewünschte Element. Wo Sie wie zuvor a zum Rückgabewert von splice

Verwandte Themen