Comment retourner un objet anonyme à partir d'une fonction de flèche de liner en javascript? [dupliquer]
cette question a déjà une réponse ici:
je suis récemment passé à es6 et j'ai commencé à utiliser des fonctions de flèche sur tout mon code. En refactorisant je suis tombé sous le code
data.map(function(d) {
return {id: d.id, selected: bool};
});
j'ai changé le code ci-dessus à ceci -
data.map((d) => {id: d.id, selected: bool});
mais j'ai eu une erreur du code ci-dessus. Je ne sais pas ce qui ne va pas ici? Je sais que S'il n'y a pas de bloc de code il y a un retour implicite fourni par la fonction de flèche.
mais vous ne savez pas comment retourner un objet vide ou anonyme avec quelques propriétés initialisées ?
Edit:
Qu'est-ce qui ne va pas si je le fais dans de cette façon? Juste pour la curiosité du saké.
data.map((d) => new {id: d.id, selected: bool});
3 réponses
mettre parens autour de l'initialiseur d'objet:
data.map((d) => ({id: d.id, selected: bool}) );
les Parenthèses n'ont aucun effet sur la valeur de l'expression à l'intérieur d'eux, mais ils faire ont syntaxiques pour effet d'éliminer l'ambiguïté de la première partie de l'expression. Sans les parenthèses, L'analyseur JavaScript doit décider si le" jeton 151910920 "signifie" Ici commence un corps de fonction "ou" ici commence un initialiseur d'objet."It toujours choisit l'ancienne (c'est un bloc de code).
introduit les parenthèses, donc, élimine la confusion: la seule chose qu'une tête (
peut signifier est" voici une expression", de sorte que {
à l'intérieur les parenthèses ne peuvent être" Voici vient un initialiseur d'objet."(Vous ne pouvez pas laisser tomber un bloc de code au moyen d'une expression, en d'autres termes, si vous essayez, vous obtiendrez une erreur de syntaxe.)
Salut je pense que vous devez ajouter paranthesis pour rendre l'objet littéral
// Parenthesize le corps pour retourner un objet littéral de l'expression: params = > ({foo: bar})
de https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
vous pouvez également utiliser
data.map((d) => {
return {id: d.id, selected: bool}
} );