Varrer e array e objetos

6 views
Skip to first unread message

Uilson Claudio

unread,
Oct 1, 2018, 3:05:29 PM10/1/18
to javascript brasil
Galera um array e dois objetos, segue abaixo:

const profiles = [
    {
      id: 1,
      userID: '1',
      favoriteMovieID: '1',
    },
    {
      id: 2,
      userID: '2',
      favoriteMovieID: '1',
    },
    {
      id: 3,
      userID: '4',
      favoriteMovieID: '5',
    },
    {
      id: 4,
      userID: '5',
      favoriteMovieID: '2',
    },
    {
      id: 5,
      userID: '3',
      favoriteMovieID: '5',
    },
    {
      id: 6,
      userID: '6',
      favoriteMovieID: '4',
    },
  ];

const users = {
    1: {
      id: 1,
      name: 'Jane Cruz',
      userName: 'coder',
    },
    2: {
      id: 2,
      name: 'Matthew Johnson',
      userName: 'mpage',
    },
    3: {
      id: 3,
      name: 'Autumn Green',
      userName: 'user123',
    },
    4: {
      id: 4,
      name: 'John Doe',
      userName: 'user123',
    },
    5: {
      id: 5,
      name: 'Lauren Carlson',
      userName: 'user123',
    },
    6: {
      id: 6,
      name: 'Nicholas Lain',
      userName: 'user123',
    },
  };

  const movies = {
    1: {
      id: 1,
      name: 'Planet Earth 1',
    },
    2: {
      id: 2,
      name: 'Selma',
    },
    3: {
      id: 3,
      name: 'Million Dollar Baby',
    },
    4: {
      id: 4,
      name: 'Forrest Gump',
    },
    5: {
      id: 5,
      name: 'Get Out',
    },
  };



Preciso imprimir na tela:
 "Jane Cruz", com id "1", assiste o filme "Planet Earth 1"
E assim de acordo com o array "profile". Como posso fazer isso ?
Obrigado

Leonardo Farroco

unread,
Oct 1, 2018, 5:48:46 PM10/1/18
to javascr...@googlegroups.com
Seria mais ou menos assim, Uilson:

function displayFavoriteMovie (userId) {
  let profile = profiles.find (profile => profile.userID == userId)
  let user = users[userId]
  let movie = movies[ profile.favoriteMovieID ]
  if (profile && user && movie )
    console.log ( `"${user.name}", com id ${userId}, assiste o filme "${movie.name}"` )
  else
    console.log( "Não foi ṕossível encontrar dados para a id fornecida")
}
displayFavoriteMovie("1")


Leonardo Farroco




--
Você recebeu essa mensagem porque está inscrito no grupo "javascript brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javascript-br...@googlegroups.com.
Para postar nesse grupo, envie um e-mail para javascr...@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javascript-bra.
Para mais opções, acesse https://groups.google.com/d/optout.

Vinicius Gomes

unread,
Oct 1, 2018, 10:31:02 PM10/1/18
to javascr...@googlegroups.com

Existe várias formas de fazer, segue abaixo uma delas.

let items= profiles.map((p)=> ({ id: p.userID, user: users[p.userID].name, movie: movies[p.favoriteMovieID].name }));
for(let item of items) {
  console.info( `"${item.user}", com id "${item.id}", assiste o filme "${item.movie}"` );
}

Boa sorte.

Em seg, 1 de out de 2018 às 16:05, Uilson Claudio <uilson...@gmail.com> escreveu:
Galera um array e dois objetos, segue abaixo:

const profiles = [
    {
      id: 1,
      userID: '1',
      favoriteMovieID: '1',
    },
    {
      id: 2,
      userID: '2',
      favoriteMovieID: '1',
    },
    {
      id: 3,
      userID: '4',
      favoriteMovieID: '5',
    },
    {
      id: 4,
      userID: '5',
      favoriteMovieID: '2',
    },
    {
      id: 5,
      userID: '3',
      favoriteMovieID: '5',
    },

u    {

--

Uilson Claudio

unread,
Oct 1, 2018, 10:46:48 PM10/1/18
to javascr...@googlegroups.com
Obrigado galera.

Abraço
Uilson
Reply all
Reply to author
Forward
0 new messages