javascript - 使用 ramda.js assocPath 为多个键分配特定值?

标签 javascript reactjs ramda.js

我对 JS 和 ramda.js 很陌生。假设我有一个由空对象组成的对象,如下所示:

obj = { 1: { }, 2: { }, 3: { } }

和由 obj 的选定键组成的数组。

arr = ['1', '2']

我需要的是在通过arr选择的关键对象内部创建一个特定的键值对,例如a:'value',所以结果看起来像这样:

obj = { 
 1: { a: 'value' }, 
 2: { }, 
 3: { a: 'value' } 
}

我尝试通过键进行映射

arr.map(key => assocPath([key, 'a'], 'value', obj) )

,还尝试了使用 arr.forEach() 的方法,但它不起作用,我相信我可能缺少一些基本知识?或者我应该使用替代的 ramda.js 函数吗?

最佳答案

看看我的解决方案

const object = { 1: { }, 2: { }, 3: { } }
const array = ['1', '3']

function magic(obj, arr) {
  return arr.reduce((acc, key) => ({
    ...acc,
    [key]: { a: 'value' },
  }), obj)
}

console.log(magic(object, array))

这也可以通过ramda的函数来实现

const object = { 1: { }, 2: { }, 3: { } }
const array = ['1', '3']

const magicR = R.reduce((acc, key) => R.assocPath([ key, 'a' ], 'value', acc))

console.log(magicR(object, array))
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.min.js"></script>

关于javascript - 使用 ramda.js assocPath 为多个键分配特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58608343/

相关文章:

javascript - 从主干路由器访问主干 View 中的变量

javascript - 更新获取请求中的函数级变量

javascript - 从另一个组件 React js 设置状态

javascript - Ramda 中的 curry 和偏函数有什么区别?

javascript - 下划线JS : trim array of objects based on condition

javascript - 从音频标签获取文件对象(HTML5)

javascript - 访问 Vuejs 组件内的元素

reactjs - 我无法将下一个 js 链接添加到 mui appbar

javascript - 如何使用 Ramda remove 从对象数组中删除空对象?

javascript - 你如何使用 Ramda 对单词数组进行排序?