Я пытаюсь изучить fp недавно и попытаться использовать ramda.js в свой проект, но я встретил некоторые проблемы.Какая разница в кодах с ramda.js?
Цель моего кода - я хочу добавить result
prop с некоторыми начальными значениями в каждый элемент массива list
, но он не работал должным образом.
Вот мой код:
var list = [{name: 'foo'}, {name: 'bar'}, {name: 'baz'}]
var list1 = R.clone(list)
var getResultList = R.times(R.identity)
// what's the difference between them ??
// it worked as expected if I wrap assoc fn into arrow function and transfer it to fn
var mapAssocResult= R.map(e=> R.assoc('result', getResultList(2), e))
// it didn't work as expected if I just transfer it as param of map fn
var mapAssocResult1= R.map(R.assoc('result', getResultList(2)))
list = mapAssocResult(list)
list1 = mapAssocResult1(list1)
list[0].result === list[1].result //false
list1[0].result === list1[1].result // true
// it seems that all result props point to the same array reference, but why?
есть что-то нужно заметить, используя Ramda.js?
Возможно, мое мышление в использовании Ramda.js совершенно неверно, так есть ли более разумный способ достичь моей цели в Ramda.js?
спасибо большое.
У меня нет никаких реальных предложений за пределами Скотта Кристофера ниже, но я хотел бы отметить, что 'R.range (0)', вероятно, более описательный и, конечно, более краткий, чем 'R.times (R.identity)'. –
спасибо за ваше предложение. –