Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Desafio: Ordenar e Extrair Dados com sort() | Métodos Avançados de Arrays e Transformações
Estruturas de Dados em JavaScript

bookDesafio: Ordenar e Extrair Dados com sort()

Tarefa

Dado um array de livros, cada um representado por um objeto com as propriedades (title, author, publicationYear), criar uma solução que execute as seguintes tarefas:

  1. Ordenar o array de livros:
    • Ordenar pelo título em ordem crescente;
    • Ordenar pelo autor em ordem decrescente;
    • Ordenar pelo ano em ordem decrescente.
  2. Extrair propriedades específicas em arrays separados:
    • Criar um array contendo apenas os títulos dos livros (ordenados pelo título em ordem crescente);
    • Criar um array contendo apenas os autores dos livros (ordenados pelo autor em ordem decrescente);
    • Criar um array contendo apenas os anos de publicação dos livros (ordenados pelo ano em ordem decrescente).

Garantir que o array original de livros permaneça inalterado.

123456789101112131415161718192021222324252627282930313233343536
const books = [ { title: "Noughts & Crosses", author: "Malorie Blackman", publicationYear: 2001, }, { title: "Priestdaddy", author: "Patricia Lockwood", publicationYear: 2017, }, { title: "The Cost of Living", author: "Deborah Levy", publicationYear: 2018, }, ]; // Sort by `title` in ascending order const sortedByTitleAscending = ___ .sort((a, b) => a.title.___(b.title)) .___((book) => book.title); // Sort by `author` in descending order const sortedByAuthorDescending = [...books] .___((a, b) => b.___.localeCompare(a.___)) .map((book) => book.author); // Sort by `year` in descending order const sortedByYearDescending = [...books] .sort((a, b) => ___ ___ ___) .___((book) => book.publicationYear); console.log("Sorted by Title (Ascending):", sortedByTitleAscending); console.log("Sorted by Author (Descending):", sortedByAuthorDescending); console.log("Sorted by Year (Descending):", sortedByYearDescending);
copy

Saída esperada:

Sorted by Title (Ascending): Noughts & Crosses, Priestdaddy, The Cost of Living
Sorted by Author (Descending): Patricia Lockwood, Malorie Blackman, Deborah Levy
Sorted by Year (Descending): 2018, 2017, 2001
  1. Para ordenar por título, utilize localeCompare() com a propriedade title.
  2. Para ordenar por autor, aplique localeCompare() com a propriedade author.
  3. Para ordenar por ano, utilize uma comparação numérica baseada na propriedade publicationYear.
  4. Utilize o método map() para criar novos arrays com propriedades específicas.
  5. Crie uma função de callback para map() que retorne a propriedade desejada para cada livro.
  6. Para extrair títulos, autores e anos, as funções de callback devem retornar as propriedades titleauthor e publicationYear, respectivamente.
  7. Certifique-se de que o array original de livros permaneça inalterado. Use a sintaxe spread ([...books]) para criar uma cópia para ordenação e extração.
123456789101112131415161718192021222324252627282930313233343536
const books = [ { title: "Noughts & Crosses", author: "Malorie Blackman", publicationYear: 2001, }, { title: "Priestdaddy", author: "Patricia Lockwood", publicationYear: 2017, }, { title: "The Cost of Living", author: "Deborah Levy", publicationYear: 2018, }, ]; // Sort by `title` in ascending order const sortedByTitleAscending = [...books] .sort((a, b) => a.title.localeCompare(b.title)) .map((book) => book.title); // Sort by `author` in descending order const sortedByAuthorDescending = [...books] .sort((a, b) => b.author.localeCompare(a.author)) .map((book) => book.author); // Sort by `year` in descending order const sortedByYearDescending = [...books] .sort((a, b) => b.publicationYear - a.publicationYear) .map((book) => book.publicationYear); console.log("Sorted by Title (Ascending):", sortedByTitleAscending); console.log("Sorted by Author (Descending):", sortedByAuthorDescending); console.log("Sorted by Year (Descending):", sortedByYearDescending);
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 8

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Suggested prompts:

Can you explain how the sorting functions work in this solution?

What would the output look like if the books array had more entries?

How can I modify this to sort by a different property, like title length?

Awesome!

Completion rate improved to 2.27

bookDesafio: Ordenar e Extrair Dados com sort()

Deslize para mostrar o menu

Tarefa

Dado um array de livros, cada um representado por um objeto com as propriedades (title, author, publicationYear), criar uma solução que execute as seguintes tarefas:

  1. Ordenar o array de livros:
    • Ordenar pelo título em ordem crescente;
    • Ordenar pelo autor em ordem decrescente;
    • Ordenar pelo ano em ordem decrescente.
  2. Extrair propriedades específicas em arrays separados:
    • Criar um array contendo apenas os títulos dos livros (ordenados pelo título em ordem crescente);
    • Criar um array contendo apenas os autores dos livros (ordenados pelo autor em ordem decrescente);
    • Criar um array contendo apenas os anos de publicação dos livros (ordenados pelo ano em ordem decrescente).

Garantir que o array original de livros permaneça inalterado.

123456789101112131415161718192021222324252627282930313233343536
const books = [ { title: "Noughts & Crosses", author: "Malorie Blackman", publicationYear: 2001, }, { title: "Priestdaddy", author: "Patricia Lockwood", publicationYear: 2017, }, { title: "The Cost of Living", author: "Deborah Levy", publicationYear: 2018, }, ]; // Sort by `title` in ascending order const sortedByTitleAscending = ___ .sort((a, b) => a.title.___(b.title)) .___((book) => book.title); // Sort by `author` in descending order const sortedByAuthorDescending = [...books] .___((a, b) => b.___.localeCompare(a.___)) .map((book) => book.author); // Sort by `year` in descending order const sortedByYearDescending = [...books] .sort((a, b) => ___ ___ ___) .___((book) => book.publicationYear); console.log("Sorted by Title (Ascending):", sortedByTitleAscending); console.log("Sorted by Author (Descending):", sortedByAuthorDescending); console.log("Sorted by Year (Descending):", sortedByYearDescending);
copy

Saída esperada:

Sorted by Title (Ascending): Noughts & Crosses, Priestdaddy, The Cost of Living
Sorted by Author (Descending): Patricia Lockwood, Malorie Blackman, Deborah Levy
Sorted by Year (Descending): 2018, 2017, 2001
  1. Para ordenar por título, utilize localeCompare() com a propriedade title.
  2. Para ordenar por autor, aplique localeCompare() com a propriedade author.
  3. Para ordenar por ano, utilize uma comparação numérica baseada na propriedade publicationYear.
  4. Utilize o método map() para criar novos arrays com propriedades específicas.
  5. Crie uma função de callback para map() que retorne a propriedade desejada para cada livro.
  6. Para extrair títulos, autores e anos, as funções de callback devem retornar as propriedades titleauthor e publicationYear, respectivamente.
  7. Certifique-se de que o array original de livros permaneça inalterado. Use a sintaxe spread ([...books]) para criar uma cópia para ordenação e extração.
123456789101112131415161718192021222324252627282930313233343536
const books = [ { title: "Noughts & Crosses", author: "Malorie Blackman", publicationYear: 2001, }, { title: "Priestdaddy", author: "Patricia Lockwood", publicationYear: 2017, }, { title: "The Cost of Living", author: "Deborah Levy", publicationYear: 2018, }, ]; // Sort by `title` in ascending order const sortedByTitleAscending = [...books] .sort((a, b) => a.title.localeCompare(b.title)) .map((book) => book.title); // Sort by `author` in descending order const sortedByAuthorDescending = [...books] .sort((a, b) => b.author.localeCompare(a.author)) .map((book) => book.author); // Sort by `year` in descending order const sortedByYearDescending = [...books] .sort((a, b) => b.publicationYear - a.publicationYear) .map((book) => book.publicationYear); console.log("Sorted by Title (Ascending):", sortedByTitleAscending); console.log("Sorted by Author (Descending):", sortedByAuthorDescending); console.log("Sorted by Year (Descending):", sortedByYearDescending);
copy

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 8
some-alt