Comment changer l'arr ['first'] de chaque objet dans un style de programmation fonctionnel en utilisant forEach, map, reduction, filter etc.
let value = 'abc' let arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }];
4 Réponses :
Voici une manière immuable de mettre à jour la propriété first
de chaque élément de votre tableau. Il utilise Array.map ()
pour créer un nouveau tableau et l'opérateur de propagation pour copier chaque élément et définir la propriété first
sur value
:
const value = 'abc'; const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }]; arr.forEach(item => item.first = value); console.log(arr);
Si vous souhaitez muter le tableau d'origine , ce qui n'est pas une bonne idée avec le paradigme fonctionnel, utilisez Array.forEach ()
à la place:
const value = 'abc'; const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }]; const newArr = arr.map(item => ({ ...item, first: value })); console.log(newArr);
Vous pouvez utiliser map
et créer un nouveau tableau
let value = 'abc'; let arr = [{ 'first': 'aaa' }, { 'first': 'bbb' }, { 'first': 'ccc' }]; let newArr = arr.map(function(item) { return { first: value } }) console.log(newArr)
Vous pouvez utiliser forEach et map pour cela, mais la réduction et le filtre ne sont pas conçus pour ce type de fonctionnalité. Vous pouvez en savoir plus ici . J'ai utilisé la fonction Flèche ES6. Si vous ne les connaissez pas et que cela vous semble étrange, lisez-en ici .
MODIFIER
Si vous souhaitez simplement modifier chaque élément de arr . p >
arr.map(item => item.first = value);
Comme @VLAZ l'a suggéré - si vous voulez le faire de manière entièrement fonctionnelle, vous devez créer un nouveau tableau.
arr.forEach(item => { item.first = value; }
Ce n'est pas très fonctionnel, car vous faites muter le tableau. Et si vous voulez faire cela, alors utiliser .map
est inutile, car il fait ce que fait .forEach
mais avec plus de surcharge et moins proprement.
si je vous comprends bien, vous voulez changer le nom de la clé «en premier» dans chaque objet du tableau en utilisant map?
vous pouvez essayer le code ci-dessous:
const value = 'abc'; const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }]; const newArr = arr.map(obj => ({...obj, first: value})); console.log(newArr);
ou si vous souhaitez modifier uniquement la valeur de first dans chaque obj:
const value = 'abc'; const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }]; const newArr = arr.map(obj => { if ('first' !== value) { Object.defineProperty(obj, value, Object.getOwnPropertyDescriptor(obj, 'first')); delete obj['first']; } return obj; }); console.log(newArr);
Qu'est-ce que tu as essayé jusque-là?
Dans un paradigme fonctionnel, vous ne changeriez pas le tableau mais vous en feriez une copie. Cela dit, cela dépend également de ce que vous voudriez même faire exactement - si vous voulez n'opérer que sur le premier élément, vous allez probablement prendre cet élément et travailler avec lui, par opposition à opérer sur le array afin de faire quelque chose uniquement avec le premier élément.
Le changer comment ?