当前位置:  开发笔记 > 编程语言 > 正文

Ramda Js:使用同一对象中的值设置对象的属性

如何解决《RamdaJs:使用同一对象中的值设置对象的属性》经验,为你挑选了2个好方法。

使用Ramda Js,我需要创建一个函数,该函数可以使用同一对象上不同属性的值设置一个对象属性.我到目前为止的尝试如下:

var foo = R.set(R.lensProp('bar'), 'foo' + R.prop('foo'));
var result = foo({foo:"bar"});

期望的结果:

{foo:"bar", bar:"foobar"}

实际结果:

{foo:"bar", bar: "foofunction f1(a) {... etc"}

很明显,我在这里误解了一些东西,任何有关如何处理这个问题的见解都会受到赞赏.



1> davidchamber..:

当一个属性的值取决于另一个属性的值时,镜头不适合.一个lambda可能是最好的:

const foo = o => R.assoc('bar', 'foo' + o.foo, o);

foo({foo: 'bar'});
// => {foo: 'bar', bar: 'foobar'}



2> Scott Sauyet..:

我刚刚编写了类似@davidchambers的答案,然后制作了一个无点版本,只是为了表明lambda实际上有多简单.而不是抛弃它,这是相比它看起来有多糟糕:

var foo = (obj) => R.assoc('bar', 'foo' + obj.foo, obj);
var foo = R.converge(R.assoc('bar'), [R.pipe(R.prop('foo'), R.concat('foo')), R.identity]);

Ramda REPL提供这两个中间版本

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有