tipos - recorrer array de objetos javascript
¿Cómo devolver un objeto anónimo desde una función de flecha de línea en javascript? (3)
Esta pregunta ya tiene una respuesta aquí:
- Función de flecha ECMAScript6 que devuelve un objeto 3 respuestas
Recientemente cambié a es6 y comencé a usar las funciones de flecha en todo mi código. Mientras refactorizaba encontré el código debajo
data.map(function(d) {
return {id: d.id, selected: bool};
});
Cambié el código anterior a este
data.map((d) => {id: d.id, selected: bool});
Pero estaba recibiendo un error del código anterior. No sé qué está mal aquí? Sé que si no hay un bloque de código, entonces hay un retorno implícito proporcionado por la función de flecha.
¿Pero no sabe cómo devolver un objeto vacío u objeto anónimo con algunas propiedades inicializadas?
Editar:
¿Qué pasa si lo hago de esta manera? Sólo por curiosidad.
data.map((d) => new {id: d.id, selected: bool});
Hola, creo que necesitas agregar paréntesis para devolver el objeto literal
// Poner entre paréntesis el cuerpo para devolver una expresión literal de objeto: params => ({foo: bar})
de https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
Ponga parens alrededor del inicializador de objeto:
data.map((d) => ({id: d.id, selected: bool}) );
Los paréntesis no tienen efecto sobre el valor de la expresión dentro de ellos, pero sí tienen el efecto sintáctico de eliminar la ambigüedad del primer token de la expresión contenida. Sin los paréntesis, el analizador de JavaScript debe decidir si el {
token significa "Aquí comienza el cuerpo de una función" o "Aquí comienza el inicializador de un objeto". Siempre elige lo primero (es decir, un bloque de código).
Por lo tanto, al introducir los paréntesis, se elimina la confusión: lo único que un líder (
puede significar es "aquí viene una expresión", por lo que {
dentro de los paréntesis solo puede estar "aquí viene un inicializador de objetos"). un bloque de código en medio de una expresión, en otras palabras; si lo intentas, obtendrás un error de sintaxis.)
También puedes usar
data.map((d) => {
return {id: d.id, selected: bool}
} );