J'ai un objet :
myObject = { 'a': 1, 'b': 2, 'c': 3 }
Je recherche une méthode native similaire à Array.prototype.map
qui peut être utilisée comme ceci :
newObject = myObject.map(function (value, label) { return value * value; }); // newObject is now { 'a': 1, 'b': 4, 'c': 9 }
JavaScript a-t-il une fonction map
pour un tel objet ? (Je veux cela pour Node.JS, donc je ne me soucie pas des problèmes entre navigateurs.)
Que diriez-vous d'écrire une phrase par ligne en utilisant JS ES10 / ES2019 ?
Utilisez
Object.entries( )
和 Object.fromEntries() :Écrivez la même chose en fonction :
Cette fonction utilise également la récursivité pour mettre au carré les objets imbriqués :
Dans ES7/ES2016, vous ne pouvez pas utiliser
Objects.fromEntries
,但您可以使用Object.assign
avec les opérateurs de propagation et les noms de clés calculésSyntaxe :ES6 / ES2015 non autorisé
Object.entries
,但您可以使用Object.keys
modifié par :ES6 introduit également des boucles
for...of
, permettant un style plus impératif :array.reduce()
Vous pouvez également utiliser reduce pour cela :
Propriétés héritées et chaîne de prototypes :
Dans certains cas rares, vous devrez peut-être mapper un objet class qui se trouve dans sa chaîne de prototypes. Dans ce cas,
ne fonctionneront pas car ces fonctions ne contiennent pas de chaîne de prototypes.Object.keys()
Object.keys()
和Object.entries()
etObject.entries()
Si vous avez besoin de mapper des propriétés héritées
.for (key in myObj) {...}
, vous pouvez utiliserfor (clé dans myObj) {...}
Je ne suis pas arrivé
Object
对象的本机map
, mais que diriez-vous de ceci :