2016-07-05 1 views
2

Ceci est pour les ramdajs gourous autour. Considérez un tableau d'objets, arr, dans l'extrait de code ci-dessous. Pour définir la valeur du premier objet, à savoir 6, en utilisant des lentilles, on s'attendrait à ce que le résultat soit un tableau. Cependant, cela ne semble pas le cas mais plutôt le résultat est un objet. Exemple:Définition des valeurs des tableaux d'objets dans les 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) 

Résultat attendu:

[{a: 6}, {a: 2}, {a: 3}] 

Résultat réel:

{0: {a: 6}, 1: {a: 2}, 2: {a: 3}} 

Une façon de retourner le tableau attendu serait d'extraire les valeurs de l'objet:

result = R.values(result) 

Existe-t-il un meilleur moyen de définir une valeur dans un tableau d'objets afin que le résultat soit également un tableau?

Répondre

3

Utilisez 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)