2017-10-03 2 views
-1

Ich versuche, ein Element aus einem Array zu entfernen und die gesamte Array-Liste zurückzugeben, aber aus irgendeinem Grund .filter() oder _.filter() löscht mein Hauptobjekt "itemsList" und lässt nur Werte aus dem Array übrig.Ein Array-Listenobjekt kann nur Werte zurückgegeben werden, die mit underscore.js oder .filter() zurückgegeben werden

var arr = {"itemsList":[{"id":11000,"name":"Demo","description":"Demo Description"},{"id":"222010","name":"test item","description":"test item desc\n"}]}; 

var resourceId = "222010"; 

var out = _.filter(arr.itemsList, function(item){ 
    return item.id !== resourceId; 
}); 

var itemsList = []; 

var newOut = itemsList.push(out); 


document.getElementById('result').value = JSON.stringify(out); 

Ich brauche meine Array die gleiche Art und Weise retun und andere Elemente aus der Liste mit Ausnahme der ID Variable halten wie:

{"itemsList":[{"id":11000,"name":"Demo","description":"Demo Description"}]} 

Freie Feel my Fiddle https://jsfiddle.net/RicardoAlves/wbnv3040/

Dank nutzen!

Antwort

2

Ich denke, das Problem ist, dass Sie Ihre Ausgabe nicht wie gewünscht formatieren.

var arr = { 
    "itemsList": [{ 
    "id": 11000, 
    "name": "Demo", 
    "description": "Demo Description" 
    }, { 
    "id": "222010", 
    "name": "test item", 
    "description": "test item desc\n" 
    }] 
}; 

var resourceId = "222010"; 

var out = _.filter(arr.itemsList, function(item) { 
    return item.id !== resourceId; 
}); 

var itemsList = { "itemList": out }; 

console.log(JSON.stringify(itemsList)); 

Sie sind Filterung der unerwünschten Elemente, sondern nur die Ausgabe der Artikel

Ausgang:

{ "itemList": [{ "id": 11000, "name": "Demo "," description ":" Demo Beschreibung "}]}

+0

Schließen. Sie wollen '" itemList ": out', sonst erhalten Sie verschachtelte Arrays. – Andy

+0

ah ja, danke. Ich werde udpate – Scriptable

+0

sieht aus wie Ihr Code tut, was ich brauche, gut gemacht danke! Ich habe versucht, dieses Array mit .push() zu drücken, wo ich einfach die Zeile var itemsList = {"itemList": out}; – Skwashy

1

Die Filterfunktion gibt ein neues Array zurück.

var out = _.filter(arr.itemsList, function(item) { 
     return item.id !== resourceId; 
    }); 

arr.itemsList=out 

document.getElementById('result').value = JSON.stringify(arr); 
+0

Funktioniert mit "underscore.js" Ich habe Ihre Antwort aktualisiert – Skwashy

+0

@Skwashy: Die Filterfunktion funktioniert ordnungsgemäß. Sie müssen die Ausgabe von der Filterfunktion nehmen und sie 'arr.itemsList' zuweisen – swap0129

Verwandte Themen