gpt4 book ai didi

ramda.js - 使用从 ramda 中的原始属性派生的新属性转换对象

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

转换以下对象的最简单方法是什么?

// original
{
name: "bob",
age: 24
}

// result
{
name: "bob",
age: 24,
description: "bob is 24 years old"
}
我可以使用镜头更新单个属性,例如增加年龄。但我不确定如何从多个属性派生为一个。

最佳答案

您可以使用 R.applySpec 创建具有派生属性的对象。要将其与原始对象合并,请使用 R.chain 和 R.merge(我使用 R.mergeLeft 使其成为最后一个属性)。
将 R.chain 应用于函数 ( chain(f, g)(x) ) 相当于 f(g(x), x) .在这种情况下 x是原始对象,g是 R.applySpec(从 x 创建对象)和 f是 R.mergeLeft(mergeLeft g(x)x)。

const { chain, mergeLeft, applySpec } = R

const getDescription = ({ name, age }) => `${name} is ${age} years old`

const fn = chain(mergeLeft, applySpec({
description: getDescription,
}))

const result = fn({
name: "bob",
age: 24
})

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.js"></script>

如果没有 Ramda,您可以通过使用 object spread 来包含原始对象的属性来获得相同的结果:

const getDescription = ({ name, age }) => `${name} is ${age} years old`

const fn = o => ({
...o,
description: getDescription(o),
});

const result = fn({
name: "bob",
age: 24
})

console.log(result)

关于ramda.js - 使用从 ramda 中的原始属性派生的新属性转换对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63208320/

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