GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

No menu could be recovered. Follow the blue links in the page.

This view

  • Original page
  • New address

GeezerVison is showing it.javascript.info — Map di oggetti

  • Tutorial
  • Il linguaggio JavaScript
  • Tipi di dato
  • Metodi per gli array
torna alle lezioni

Map di oggetti

importanza: 5

Avete un array di oggetti user, ognuno di questi possiede name, surname e id.

Scrivete il codice per creare un altro array che derivi da questo, sempre composto da oggetti con id e fullName, dove fullName viene generato da name e surname.

Un esempio:

let john = { name: "John", surname: "Smith", id: 1 };
let pete = { name: "Pete", surname: "Hunt", id: 2 };
let mary = { name: "Mary", surname: "Key", id: 3 };

let users = [ john, pete, mary ];

let usersMapped = /* ... il vostro codice ... */

/*
usersMapped = [
  { fullName: "John Smith", id: 1 },
  { fullName: "Pete Hunt", id: 2 },
  { fullName: "Mary Key", id: 3 }
]
*/

alert( usersMapped[0].id ) // 1
alert( usersMapped[0].fullName ) // John Smith

Quindi, in realtà avrete bisogno di mappare un array di oggetti in un altro. Provate ad utilizzare =>.

let john = { name: "John", surname: "Smith", id: 1 };
let pete = { name: "Pete", surname: "Hunt", id: 2 };
let mary = { name: "Mary", surname: "Key", id: 3 };

let users = [ john, pete, mary ];

let usersMapped = users.map(user => ({
  fullName: `${user.name} ${user.surname}`,
  id: user.id
}));

/*
usersMapped = [
  { fullName: "John Smith", id: 1 },
  { fullName: "Pete Hunt", id: 2 },
  { fullName: "Mary Key", id: 3 }
]
*/

alert( usersMapped[0].id ); // 1
alert( usersMapped[0].fullName ); // John Smith

Da notare che nell’arrow function abbiamo bisogno di utilizzare un’ulteriore parentesi.

Non possiamo scrivere semplicemente:

let usersMapped = users.map(user => {
  fullName: `${user.name} ${user.surname}`,
  id: user.id
});

Se ricordate, ci sono due tipi di arrow function: senza corpo value => expr e con il corpo value => {...}.

Qui JavaScript tratterà { come l’inzio del corpo della funzione, non l’inizio dell’oggetto. Questo trucco viene utilizzato per racchiuderle nelle normali parentesi:

let usersMapped = users.map(user => ({
  fullName: `${user.name} ${user.surname}`,
  id: user.id
}));

Ora funziona.

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.