2016-07-05 3 views
2

이것은 ramdajs 전문가를위한 것입니다. 아래에 표시된 코드 스 니펫에 arr의 개체 배열이 있다고 가정합니다. 렌즈를 사용하여 첫 번째 객체의 값을 6으로 설정하려면 은 결과가 배열 이길 기대합니다. 그러나 이것은 사실이 아니라 오히려 결과가 하나의 대상입니다. 예 :ramdajs의 객체 배열 설정 값

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) 

결과가 배열이기도 한 개체 배열의 값을 설정하는 더 좋은 방법이 있습니까?

답변

3

사용 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)