Je me demande comment utiliser certains J'ai essayé du code comme p> Peut-être parce que les propriétés de l'objet ne sont pas énumérables? P> y a-t-il un moyen d'exécuter une fonction de réduction sur un objet? Strong> p> Remarque: em> Il n'y a pas de but final spécifique; J'explore ce qui est possible ou ce qui pourrait être de meilleurs modèles. P> p> Réduire code> logique sur un objet plutôt qu'un tableau. Quelque chose comme itérant sur des tuples représentés par
[objet_property, propriété_value] code>). P>
4 Réponses :
Méthodes de tableau comme Réduire () code>
ne peut fonctionner que sur des matrices ou des objets similaires à une matrice (avec des propriétés code> et des propriétés numériques). p>
Vous pouvez appeler objet .Values () code>
pour obtenir une matrice de valeurs de propriété d'un objet. P>
Vous pouvez exécuter réduire () code> méthode sur la matrice renvoyée par
objet.keys () code> fonction. Il ressemble à ceci:
vous pouvez utiliser Object.Keys (Obj) qui vous fournira des noms de propriété sur ce tableau, vous pouvez appliquer n'importe quelle méthode de tableau (prédéfinie) Comme ceci
p>
var obj = { foo: 'bar', bar: 'baz' }; var prev=[] //let say prev is array in which you want to store some property value Object.keys(obj).reduce(function(element) { // you can have condition here as well prev.push(obj[element]); });
Plusieurs erreurs.
Voici un exemple de travail: p>
p>
var obj = { foo: 'bar', bar: 'baz' }; console.log(Object.values(obj));
Toutes les réponses correctes, mais concentrées sur les mauvaises choses. J'ai résolu la valeur de retour, cependant, merci. La question concerne la manière de (si possible) d'exécuter une réduction sur un objet; Il ne s'agit pas d'obtenir les valeurs d'objet. Oui: La question est parce que j'essaye JavaScript et la question est une pure curiosité. La note sur la nommée est vraie également, mais j'ai explicitement choisi de ne pas vous concentrer sur l'intérieur du rappel, alors je l'ai appelé simplement à souligner son rôle d'accumulateur. Au fait, imo La réponse correcte est le détail de la propriété de longueur manquante code>.
array.pototype.reduce () code> suppose que le contexte a une propriété code> de la propriété et des touches
[0..length - 1] code>
Quelle est l'attente de production?
Aucune sortie attendue; Ce n'est pas le problème. Je veux savoir s'il est possible de itérer avec réduire, quelle que soit votre opération dans le rappel.
Aussi
Réduire code> attend que votre rappel
renvoie code> S la nouvelle valeur de l'accumulateur. Je pense que vous ne devriez pas utiliser
réduire code> ici du tout.
@Bergi Vous avez raison, je l'ai oublié (je vais éditer). Comme je l'ai dit, le code de rappel n'est pas mon problème ici, ce n'est qu'un exemple.
Que voulez-vous accomplir pour courir réduire dans un objet? Quel est le résultat final souhaité? Réduire l'objettive obtient une valeur unique. Si vous voulez itérer .Map est plus adéquat.
.map code> renvoie un tableau avec la même longueur
code> comme l'original. En fait veux i> une valeur unique. Il n'y a pas de valeur de retour pour accomplir, je l'ai déjà mentionné; Je suis juste en train d'expérimenter avec JavaScript. - Mais tout le monde continue de se concentrer sur ce que les rappels devraient revenir. La réponse est, comme vous l'avez dit: "une seule valeur réduite". - spécifiquement, je veux directement b>
renvoyer code> le traitement d'une seule instruction (comme un appel de fonction; par exemple
réduire () code> dans ce cas), Sans avoir à créer une variable temporaire, exécutez une boucle
pour code> pour l'initialiser, renvoyez enfin la variable et GC.