Karte Reduzierung Objekt mit Unterstrich
Ich reduzieren wollen, dieses Objekt nur ein Objekt mit Produkt-Namen und der Durchschnittliche Preis. Was ist der Schnellste Weg, es zu tun?
var foo = { group1: [
{
name: "one",
price: 100
},
{
name: "two",
price: 100
}],
group2: [
{
name: "one",
price: 200
},
{
name: "two",
price: 200
}],
group3: [
{
name: "one",
price: 300
},
{
name: "two",
price: 300
}]
}
was in
var foo2 = [{
name: 'one',
price: 200
},{
name: 'two',
price: 200
}];
Dank!
- Wo kommt
400
kommen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit: Verlassen Sie diese für jetzt, aber ich habe Total vergessen _.flatten, so redmallard hat eine viel bessere Antwort.
Wenn Sie bereits wissen, der Produkt Namen und Sie erscheinen in jeder Gruppe, Sie konnte das ganze schnell auf diese Weise:
Lege ich diese zusammen, das sollte funktionieren, selbst wenn Ihre Gruppen haben unterschiedliche Produkte (zB "man" in der ersten, zweiten und vierten Gruppe und "zwei" in der ersten und der Dritten):
Könnte man immer noch tun, die oben in eine Funktion mit einem Zähler und der Summe der Preise, aber auf diese Weise, Sie haben auch die Preise in Fall, dass Sie wollen, sagen, nehmen Sie die standard-Abweichung oder finden Sie den gewünschten Modus aus.
Nicht zu regnen auf Evan ' s parade, aber hier ist eine alternative, die ist ein bisschen kürzer 😉
Ihn in Aktion zu sehen: http://plnkr.co/edit/lcmZoLkrlfoV8CGN4Pun?p=preview
Ich mag redmallard Lösung, aber ich wollte den golf ein wenig.
Unterstrich enthalten nicht
sum
Funktion, aber wir können schreiben, ziemlich elegant funktionalen Ausdrücken durch hinzufügen einersum
mixin. Diese Funktion ist bekannt als hinzufügen in die Unterstrich-contribs repo.Dann können wir schreiben:
http://plnkr.co/edit/ul3odB7lr8qwgVIDOtM9
Aber dann können wir auch eine
avg
Mixins erweitern unsere toolbelt: