2017-09-10 1 views
-1

i-Array verfolgt haben Wert von Array in Jquery entfernenkann nicht

var userIdArray=["1", "3", "6", "39", "62", "139"]; 

ich will

mit Wert-Array-Wert entfernen i Methode folgende versucht haben

function deleteMember(id) { 
       alert(id+"="+userIdArray.indexOf(id)); 

       userIdArray.splice(userIdArray.indexOf(id),1); 

      } 

Aber es immer entfernen letzter Wert

auch immer wieder -1 aber wenn pass wert wie userIdArray.indexOf("6") dann löscht es bestimmte position Kann mir jemand helfen, wie bestimmte Wert zu entfernen?

+0

Ihre Funktion funktioniert gut. Was ist das Problem damit? –

+0

Wenn ID = 6 ich pass dann wird es letzten Wert löschen nicht diesen Wert – iCoders

+1

müssen Sie eine Zeichenfolge als Wert, nicht nur eine Zahl, weil indexOf sucht nach dem gleichen Typ und Wert (streng). –

Antwort

1

Ich glaube, Sie ein Problem zu bekommen, die Ihre ID, die Sie in die deleteMember Funktionen nicht setzen ist ein Faden.

Dies könnte wahrscheinlich lösen Ihr Problem:

var userIdArray=["1", "3", "6", "39", "62", "139"]; 
 

 
function deleteMember(id) { 
 
    removeId = String(id) 
 
    removeIndex = userIdArray.indexOf(removeId) 
 
    if(removeIndex != -1) 
 
    userIdArray.splice(removeIndex,1); 
 
} 
 

 
deleteMember(3) 
 
console.log(userIdArray)

Eine schönere Art und Weise würde Ihre Daten wie folgt sein Umgang: (ES6 Ansatz)

var userIdArray=["1", "3", "6", "39", "62", "139"]; 
 

 
deleteMemberFromArray = (array, value) => 
 
    array.filter((member) => 
 
    \t member != String(value) 
 
    ); 
 

 

 
userIdArray = deleteMemberFromArray(userIdArray, 3) 
 
console.log(userIdArray)

+0

Danke Kyon.its funktioniert gut.silly Fehler .I versucht mit String aber nicht das vorher.danke – iCoders

+0

Habe gerade ein paar Sachen abgesichert, gib das bearbeitete eine andere Aufnahme. – Kyon

+0

kyon.ya sure .danks – iCoders

1

Der einfachste Weg, dies zu tun ist filter() zu verwenden:

var userIdArray = ["1", "3", "6", "39", "62", "139"]; 
 
function deleteMember(id) { 
 
    userIdArray = userIdArray.filter(i => i != id); 
 
} 
 

 
deleteMember('3'); 
 

 
console.log(userIdArray);

+0

Danke für die Antwort – iCoders

0

Sie diese viel kürzer und einfache Art und Weise versuchen können, zu erreichen, was Sie suchen:

function deleteMember(id) { 
    alert(id+"="+userIdArray.indexOf(id)); 
    array.splice(i, 1); 
} 
2

jQuery.grep()

Sie in return (i > 10); jede Bedingung verwenden können und berechnen

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ]; 
 

 
    
 
arr = jQuery.grep(arr, function(n, i) { 
 
    return (i > 10); 
 
}); 
 
console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

Danke Farhad für die Antwort – iCoders