javascript - 在 ramdajs 中设置对象数组的值

标签 javascript arrays ramda.js

这是为周围的 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)

是否有更好的方法在对象数组中设置值,以便结果也是数组?

最佳答案

使用lensIndex

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)

关于javascript - 在 ramdajs 中设置对象数组的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38204567/

相关文章:

arrays - 在 PureScript 中将数组转换为列表

php - 在 for 循环中提取 PHP 数组值并传递给 JQuery

javascript - 函数式编程和异步/ promise

javascript - 无法将动态数据添加到 jquery 列表中

javascript - 模态立即关闭

javascript - 为什么 puppeteer 给我发回手机截图?

php - MySQL 查询的多维数组以 XML 格式输出

javascript - Ramda.js 中的分组和求和

Javascript:如何用更实用的模式替换嵌套的 if/else?

javascript indexOf 无法按预期使用数组