追加到字符串Ramda.js的末尾

时间:2017-08-13 16:22:18

标签: javascript functional-programming ramda.js

我正在尝试使用Ramda将字符串附加到字符串的末尾,但以下内容不起作用。

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

它返回

['A','B']

有人知道在Ramda中这样做的好方法,或者这并不意味着我需要编写代码来解决javascripts concat函数吗?

编辑:

我正在尝试执行以下操作

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

除非我在其他地方定义了函数并将其定义为内联函数,否则执行"A" + "B"在此错误中不起作用。

3 个答案:

答案 0 :(得分:3)

正如其他人所指出的,concat是最简单的方法,使用以下任何一种方法:

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

第一个,使用占位符可能会更容易。

但我猜测你的结果是一个中间结构,后来用于将该城市加入该城市。如果是这样,那么这可能是过度的。至少在现代JS中,将它们直接组合起来太容易了:

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

您可以在 Ramda REPL

中看到这一切

答案 1 :(得分: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

答案 2 :(得分:0)



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

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

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




"A" + "B"只是a lot faster than concat