gpt4 book ai didi

ramda.js - 如何使用ramdajs同时更改多个值

转载 作者:行者123 更新时间:2023-12-05 08:56:05 28 4
gpt4 key购买 nike

我是 ramdajs 的新手。假设我有一个对象:

{a: 1, b: 2, c: 3}

我可以这样做来将 a 更改为 11:

  const aLens = R.lensProp('a');
R.set(aLens, 11, {a: 1, b: 2, c: 3});

如何通过一次调用将 a 更改为 11 并将 b 更改为 22?

最佳答案

如果您只需要用已知值更新键,一种选择是使用 R.merge :

const obj = {a: 1, b: 2, c: 3}

R.merge(obj, {a: 11, b: 22}) //=> {"a": 11, "b": 22, "c": 3}

如果您需要根据现有值更新对象,那么您可以使用 R.evolve相反。

const abAdder = R.evolve({
a: add(10),
b: add(20)
})

abAdder(obj) //=> {"a": 11, "b": 22, "c": 3}

您也可以将其创建为镜头,但除非您计划将其与其他镜头组合,否则上述选项的优势值得怀疑。

const projectLens = keys => R.lens(R.pick(keys), R.flip(R.merge))

const abLens = projectLens(['a', 'b']);

R.set(abLens, { a: 11, b: 22 }, obj) //=> {"a": 11, "b": 22, "c": 3}
R.view(abLens, obj) //=> {"a": 1, "b": 2}

关于ramda.js - 如何使用ramdajs同时更改多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729542/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com