我对 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/