Ich habe ein Objekt wie so bekommt ...Erste Daten aus verschachteltem JSON-Array
var oInfoModal = "{"modals":[{"myID":17,"warningIdx":[0]},{"myID":12,"warningIdx":[1,2]},{"myID":11,"warningIdx":[3]},{"myID":10,"warningIdx":[4]},{"myID":9,"warningIdx":[5,6,7]},{"myID":8,"warningIdx":[8]},{"myID":7,"warningIdx":[9,10]},{"myID":6,"warningIdx":[11,12]},{"myID":5,"warningIdx":[13,14]},{"myID":4,"warningIdx":[15,16]},{"myID":3,"warningIdx":[17]},{"myID":1,"warningIdx":[18,19]},{"myID":0,"warningIdx":[20,21]}]}";
Ich mag das Objekt filtern basierend auf einem warnIdx Wert auf eine Funktion übergeben, aber ich bin immer leer Objekt als Ergebnis. Ich weiß, dass das Problem darin liegt, dass oInfoModal.modals.warningIdx selbst ein Array ist. Aber ich bin mir nicht sicher, wie man das gefilterte oInfoModal.modals-Objekt zurückgibt.
function filterInfoModals(warnIdx) {
return oInfoModal.modals.filter(function (item) {
return item.warningIdx == warnIdx;
});
}
Ich habe auch versucht
function filterInfoModals(warnIdx) {
return oInfoModal.modals.filter(function (item) {
return item.warningIdx.filter(function (idx,val) {
return val.warningIdx == warnIdx;
});
});
}
die mir die ursprüngliche, ungefilterte, Objekt zurückgibt.
Jetzt nur im Kreis. Jede Führung wäre willkommen!
Haben Sie versucht, Rückkehr item.warningIdx.indexOf (warnIdx)> -1' für Ihr erstes Beispiel? – abagshaw
Das hat den Trick gemacht. Funktion filterInfoModals (warnIdx) { Rückgabe oInfoModal.modals.filter (Funktion (Element) { \t Rückgabe item.warningIdx.indexOf (warnIdx)> -1; }); } –
Setzen Sie dieses oInfoModal auch auf diese 'Zeichenfolge' in Ihrem Code? Sie müssen in einfache Anführungszeichen eingeschlossen werden, wenn Sie doppelte Anführungszeichen verwenden, um Felder und Werte anzugeben ... und wenn oInfoModal eine Zeichenfolge ist, müssen Sie JSON.parse() in ein tatsächliches Objekt einfügen. –