2017-08-13 4 views
0

Ich versuche, eine Zeichenfolge an das Ende einer Zeichenfolge mit Ramda anzufügen, aber Folgendes funktioniert nicht.Am Ende der Zeichenfolge anhängen Ramda.js

R.append("A", "B")

es gibt

['A','B']

Kennt jemand eine gute Möglichkeit, dies in Ramda oder in einer Art und Weise zu tun, heißt das noch lange nicht, dass ich Code schreiben müssen javascripts Curry concat Funktion?

Edit:

Ich versuche, die folgenden

props = { 
 
    city: "Boston", 
 
    state: "Massachusetts", 
 
    zip: 22191 
 
} 
 
var appendCommaToCity = R.evolve({city: R.append(",")} 
 
appendCommaToCity(props)

"A" + "B" nicht tun zu tun, die nicht in dieser sitchuation funktionieren, wenn ich die Funktion irgendwo anders und Curry es definieren, oder Definieren Sie es inline.

+2

"A" + "B" ?????? –

+2

Ich habe keine Ahnung von Ramda, aber würde [R.Concat ('A', 'B')] (http://ramdajs.com/docs/#concat) nicht funktionieren? – yuriy636

+0

Warum alles curry? Es ist ein Einzeiler: 'const appendString = b => a => Zeichenkette (a) + Zeichenkette (b);' und 'var appendCommaToCity = R.evolve ({Stadt: appendString (", ")})'. Und in Bezug auf Curry. Sag mir, würdest du jemals diese Utility-Funktion benutzen, wo du eine einfache 'stringA + stringB' machen kannst? Ich würde sicherlich nicht. Warum also sollten Sie dieses Ding curry, wenn das der einzige Weg ist, es richtig zu benutzen? Ich denke dir zu kompliziert. – Thomas

Antwort

2

Wie andere haben darauf hingewiesen, concat der einfachste Ansatz ist, eine dieser Techniken:

const appendCommaToCity = R.evolve({city: R.concat(R.__, ",")}) 
// or 
const appendCommaToCity = R.evolve({city: R.flip(R.concat)(",")}) 

Die erste, die den Platzhalter verwendet, könnte hier einfacher sein.

Aber ich vermute, dass Ihr Ergebnis eine Zwischenstruktur ist, die später verwendet wird, um diese Stadt mit dem Staat zu verbinden. Wenn das der Fall ist, dann könnte dies zu viel werden. Es ist einfach zu einfach, zumindest in der modernen JS, sie direkt zu kombinieren:

const foo = ({city, state}) => `${city}, ${state}` 

Sie dies alles in Aktion in den Ramda REPL sehen kann.

0
console.log(R.concat("ACD", "BEF")); // concatenates strings as they are 
// => ACDBEF 
// Or 
var arr = R.append("ACD", "BEF"); // creates array ["B","E","F","ACD"] 
var last = [arr.pop()]; // gets the last element "ACD" and removes it from the array 
console.log(last.concat(arr).join('')); // adds the last to the beginning of the array then joins all to form a string 
// => ACDBEF 
// Or 
console.log("ACD" + "BEF"); // simple js string addition 
// => ACDBEF 
// ++ There are more js methods 
+0

Weil du 'ACDBEF' nicht' BEFACD' willst. –

+0

sry, habe gerade meinen Fehler (Argument Reihenfolge) – Thomas

+0

Erste Beispiel funktioniert nicht, weil Sie das erste Element vor hand haben müssen. –

0

console.log("A".concat("B").concat("C")) 
 

 
console.log("".concat("A", "B", "C")) 
 

 
console.log(String.prototype.concat("A", "B", "C"))

Aber gerade "A" + "B" ist a lot faster than concat

Verwandte Themen