在 ramdajs 中设置对象数组的值
Setting values of arrays of objects in ramdajs
这是为周围的 ramdajs 专家准备的。考虑下面显示的代码片段中的对象数组 arr。
要设置第一个对象的值,比如 6,使用镜头,
人们会期望结果是一个数组。但是,情况似乎并非如此,而是结果是一个对象。
示例:
import R from 'ramda'
let arr = [{a: 1}, {a: 2}, {a: 3}]
let aLens = R.lensPath([0, 'a'])
let result = R.set(aLens, 6, arr)
预期结果:
[{a: 6}, {a: 2}, {a: 3}]
实际结果:
{0: {a: 6}, 1: {a: 2}, 2: {a: 3}}
返回预期数组的一种方法是从对象中提取值:
result = R.values(result)
有没有更好的方法在对象数组中设置一个值,使结果也是一个数组?
import R from 'ramda'
let arr = [{a: 1}, {a: 2}, {a: 3}]
let aLens = R.compose(R.lensIndex(0), R.lensPath('a'))
let result = R.set(aLens, 6, arr)
这是为周围的 ramdajs 专家准备的。考虑下面显示的代码片段中的对象数组 arr。 要设置第一个对象的值,比如 6,使用镜头, 人们会期望结果是一个数组。但是,情况似乎并非如此,而是结果是一个对象。 示例:
import R from 'ramda'
let arr = [{a: 1}, {a: 2}, {a: 3}]
let aLens = R.lensPath([0, 'a'])
let result = R.set(aLens, 6, arr)
预期结果:
[{a: 6}, {a: 2}, {a: 3}]
实际结果:
{0: {a: 6}, 1: {a: 2}, 2: {a: 3}}
返回预期数组的一种方法是从对象中提取值:
result = R.values(result)
有没有更好的方法在对象数组中设置一个值,使结果也是一个数组?
import R from 'ramda'
let arr = [{a: 1}, {a: 2}, {a: 3}]
let aLens = R.compose(R.lensIndex(0), R.lensPath('a'))
let result = R.set(aLens, 6, arr)