Ich habe ein Array von event
Objekte namens events
. Jedes event
hat markets
, ein Array, das market
Objekte enthält. Darin befindet sich ein weiteres Array namens outcomes
, das outcome
Objekte enthält.Underscore.js .filter() und .any()
In this question, ich fragte nach einem [Underscore.js] Weg, um alle Ereignisse zu finden, die Märkte haben, die Ergebnisse haben, die eine Eigenschaft mit dem Namen test
haben. Die Antwort war:
// filter where condition is true
_.filter(events, function(evt) {
// return true where condition is true for any market
return _.any(evt.markets, function(mkt) {
// return true where any outcome has a "test" property defined
return _.any(mkt.outcomes, function(outc) {
return outc.test !== "undefined" && outc.test !== "bar";
});
});
});
Dies funktioniert gut, aber ich frage mich, wie ich es ändern würde, wenn ich die Ergebnisse für jeden Markt, so dass market.outcomes
nur gespeicherten Ergebnisse, die waren gleich bar
filtern will. Derzeit gibt mir dies nur Märkte, die Ergebnisse haben, die einigetest
Eigenschaften gesetzt haben. Ich möchte diejenigen ausstreifen, die das nicht tun.
Ist es wirklich toll funktioniert? Ihr innerster '.any()' Callback verweist auf "outcome", aber der Parameter ist "outc" ... – Pointy
Außerdem scheint es, als ob Sie nur von '.any()' zu '.all() wechseln müssen. 'mit einer entgegengesetzten Bedingung. Mit anderen Worten, gehen Sie von "alle, die sind ..." zu "alle, die nicht ... sind" – Pointy
Sorry, Tippfehler .... –