2017-05-29 7 views
0

ich habe Array von Objekten wie solche:Lodash _.filter um mehr als 1 Schlüssel

var chart = [ 
     { 
      "IDACCT": 28, 
      "LVLCOA": 2, 
      "IDPRNT": 1, 
      "NMACCI": "110-000 - ASSETS" 
     }, 
     { 
      "IDACCT": 76, 
      "LVLCOA": 2, 
      "IDPRNT": 1, 
      "NMACCI": "170-000 - FIXED ASSETS" 
     } 
    ]; 

Ich mag würde Objekt zurückzukehren, wo meine Suche (Prädikat) basiert mit zwei Tasten:

d = _.filter(chart,function(o,e){ 
       return o.LVLCOA === 2 && o.IDPRNT === e   
      }); 

das funktioniert nicht. Ich muss vielleicht ein paar Argumente für die Funktion liefern. Das Problem ist in der Funktion nicht erkennbar.

Antwort

0

Natürlich nicht, wenn Sie versuchen, eine Zahl mit einer nicht deklarierten Variablen e zu vergleichen. Ich nehme an, du wolltest es mit einer anderen Nummer vergleichen?

+0

ich denke schon. e kommt vom Handler-Ereignis. irgendein Vorschlag? trotzdem aber wenn ich console.log (e). es druckt die Nummer –

+0

Ich werde die Argumente auf die Frage aktualisieren. aber immer noch nicht erkannt –

+0

Was passiert, wenn Sie einen Haltepunkt auf diese Linie setzen und wenn Sie den Mauszeiger über 'e' halten oder wenn Sie zu diesem Zeitpunkt' console.log' machen? –

0

In Ihrem speziellen Fall können Sie nur eine Kette mit zwei filter() Aufrufen einrichten und Prädikat Funktionen vollständig verzichten. Passing filter() Objekt shorthands sollte ausreichen:

var e = 1; 
var d = _(chart) 
    .filter({ LVLCOA: 2 }) 
    .filter({ IDPRNT: e }) 
    .value();