Wie kann ich ramdas sequence
verwenden, um ein Wörterbuch zu durchlaufen?Verwenden Sie ramda `sequenz`, um ein Wörterbuch zu durchlaufen
folgende Wörterbuch
cars = {color: ['yellow', 'red'], year: [2017], model: ['coup', 'sedan']}
Gegeben Ich mag würde das Ergebnis durchlaufen
all_cars = [
{color: 'yellow', year: 2017, model: 'coup'},
{color: 'yellow', year: 2017, model: 'sedan'},
{color: 'red', year: 2017, model: 'coup'},
{color: 'red', year: 2017, model: 'sedan'}
]
Mit R.sequence
Ergebnisse in einer Liste von einer leeren Liste
R.sequence(R.of, cars)
[[]]
Wenn ich produzieren Durchqueren Sie eine Liste anstelle eines Wörterbuchs, es erzeugt das korrekte kartesische Produkt, aber die res ults sind (natürlich) Listen statt Wörterbücher.
R.sequence(R.of, [['yellow', 'red'], [2017], ['coup', 'sedan']])
[["yellow", 2017, "coup"], ["yellow", 2017, "sedan"], ["red", 2017, "coup"], ["red", 2017, "sedan"]]
Das funktioniert, aber sicherlich sollte es eine Fantasy-Land 'Traversable' Instanz für Wörterbücher zu nutzen. – Cirdec
Ramda hat [debattiert] (https://github.com/ramda/ramda/issues/2046) zahlreiche Male. Es ist schwer, überhaupt etwas gegen ein Objekt faltbar zu machen, wenn man eine nicht-kommutative Funktion haben könnte, und man möchte immer noch '{a: 1, b: 2}' und '{b: 2, a: 1}' zu sein gleich. –
Verrückt. Die Berücksichtigung von '{a: 1, b: 2} = {b: 2, a: 1}' schließt nicht die Auswahl einer kanonischen Reihenfolge für 'Traversable' aus. – Cirdec