0
votes

Comment modifier un objet à l'intérieur de la matrice en utilisant des expressions de Ramda?

J'ai un tableau comme celui-ci:

  {
    id: '4581852',
    label: 'new Three',
    types: [1, 7, 9]
  }


0 commentaires

3 Réponses :


2
votes

Vous pouvez utiliser tableau # Rechercher code> pour obtenir l'objet, puis mettez-la directement à jour directement ses propriétés.

p>

const arr = [
  {
    id: '1852',
    label: 'One',
    types: [1, 2, 4]
  },
  {
    id: '1854852',
    label: 'Two',
    types: [1, 2]
  },
  {
    id: '4581852',
    label: 'Three',
    types: [1]
  }
]
const obj = arr.find(({id})=>id==='4581852');
obj.label = 'new Three';
obj.types.push(7,9);
console.log(arr);


5 commentaires

Je ne peux pas utiliser la méthode push, Eslint le rejetera


@Taouben Comment ajoutez-vous des éléments à la matrice alors?


@Taouben Vous pouvez également utiliser Spread Syntaxe: obj.types = [... obj.types, 7, 9]


expressions de Ramda? Je n'utiliserai pas aussi simplement simplement JS ici, j'ai dit cela dans le titre


Je ne pense pas que les expressions de Ramda rendent cette tâche plus facile.



1
votes

Vous pouvez rechercher id code> dans list code> et mettre objet code> à la place de ce que vous trouvez. Gardez à l'esprit que de cette façon objet code> doit contenir toutes les propriétés. XXX PRE>

Exemple d'utilisation pour remplacer 2ND STRY> ELEMENT: P>

const list = [
  {
    id: '1852',
    label: 'One',
    types: [1, 2, 4]
  },
  {
    id: '1854852',
    label: 'Two',
    types: [1, 2]
  },
  {
    id: '4581852',
    label: 'Three',
    types: [1]
  }
]

const nextList = replace(list, "1854852", { id: "1854852", label: 'Other Three', types: [1, 2, 3] })


0 commentaires

2
votes

Tout d'abord, Ramda sera pas em> vous aider à modifier votre valeur, si par "Modifier", vous voulez dire altérer en place. Ramda (non-responsabilité: Je suis l'un des auteurs) est vraiment de travailler avec des données immuables. Cependant, il possède de nombreuses techniques pour vous aider à créer une copie modifiée de vos données. Je ne sais pas que l'un d'entre eux en vaut la peine, car une version ES6 assez simple est tout aussi propre.

Si vous souhaitez utiliser Ramda, une version peut ressembler à ceci: P>

P>

.as-console-wrapper {min-height: 100% !important; top: 0}


0 commentaires