2016-12-16 5 views
0

Ich habe eine JSON-Array-Ausgabe von REST-API wie folgt, ich zeige diese Elemente auf dem HTML mit ng-Wiederholung.Splice oder Entfernen Sie die Liste der Elemente aus JSON Array, entfernen nur geradzahlige Elemente nur anstelle der übereinstimmenden Elemente

var searchresponse = [{ 
"items": [{ 
    "employeeId": "ABC", 
    "type": "D", 
    "alive": "Yes" 

}, { 
    "employeeId": "DEF", 
    "type": "D", 
    "alive": "Yes" 

}, { 
    "employeeId": "NPK", 
    "type": "D", 
    "alive": "Yes" 

}, { 
    "employeeId": "PKN", 
    "type": "A", 
    "alive": "Yes" 
}], 
"more": false 
}]; 

, wenn der Benutzer versucht selectAll/Single wählen zu löschen, indem ich rufe ein REST-API, um die Mitarbeiter-ID aus der db zu entfernen. Sobald ich eine erfolgreiche Antwort erhalten habe, plane ich, die Werte, die vom Benutzer aus der VIEW ausgewählt wurden, zu verbinden/zu entfernen. Ich möchte folgende Employeeid und ihre Art entfernen, lebend aus dem Search entfernt

var data1=["ABC","NPK","PKN"]; 

Ich habe versucht, es wie dieses

var data1=["ABC","NPK"]; 
var items=searchresponse[0].items; 
for(i in items){ 
if(data1.indexOf(items[i].employeeId)!=-1){ 
    items.splice(i,1); 
} 
} 
console.log(searchresponse[0].items); 

tun, was wirklich passiert, ist es entfernt auch nummerierten Elemente nur zB: es entfernte ABC, PKN. (Es entfernt 0., 2., 4. Artikel in der Liste. Verlassen 1., 3. Artikel usw.) Was fehlt mir hier

+0

Es ist nicht die Elemente aus der Liste – Praveen

+0

entfernen Sie können Index $ den Index des Objekts erhalten dann splice das Objekt aus das Array – axcl

+0

Wie kann ich es axcl, können Sie mich bitte führen. Ich bin jetzt für einen Tag von diesem Ding betroffen. – Praveen

Antwort

1

Das Problem ist, wenn Sie das Element aus Array, den Index anderer Elemente im Array entfernen nach links verschieben.

Angenommen, Sie 4 Elemente im Array haben ([a, b, c, d]) und Sie das erste Element herausnehmen, um i=0 dann in der zweiten Iteration die resultierende Anordnung [b,c,d] sein und ii=1 jetzt wird effektiv haben Sie b in der Schleife verpasst

var searchresponse = [{ 
 
    "items": [{ 
 
    "employeeId": "ABC", 
 
    "type": "D", 
 
    "alive": "Yes" 
 

 
    }, { 
 
    "employeeId": "DEF", 
 
    "type": "D", 
 
    "alive": "Yes" 
 

 
    }, { 
 
    "employeeId": "NPK", 
 
    "type": "D", 
 
    "alive": "Yes" 
 

 
    }, { 
 
    "employeeId": "PKN", 
 
    "type": "A", 
 
    "alive": "Yes" 
 
    }], 
 
    "more": false 
 
}]; 
 

 
var data1 = ["ABC", "NPK", "PKN"]; 
 

 
var data1 = ["ABC", "NPK"]; 
 
var items = searchresponse[0].items; 
 
for (var i = items.length - 1; i >= 0; i--) { 
 
    if (data1.indexOf(items[i].employeeId) != -1) { 
 
    items.splice(i, 1); 
 
    } 
 
} 
 
console.log(searchresponse[0].items);

+0

Wowww !! Vielen Dank, Johny. Es hat funktioniert wie ein Charme !! Danke für die Erklärung auch :) – Praveen

Verwandte Themen