Desafio: 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:
- Ordenar o array de livros:
- Ordenar pelo título em ordem crescente;
- Ordenar pelo autor em ordem decrescente;
- Ordenar pelo ano em ordem decrescente.
- 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.
123456789101112131415161718192021222324252627282930313233343536const 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);
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
- Para ordenar por título, utilize
localeCompare()com a propriedadetitle. - Para ordenar por autor, aplique
localeCompare()com a propriedadeauthor. - Para ordenar por ano, utilize uma comparação numérica baseada na propriedade
publicationYear. - Utilize o método
map()para criar novos arrays com propriedades específicas. - Crie uma função de callback para
map()que retorne a propriedade desejada para cada livro. - Para extrair títulos, autores e anos, as funções de callback devem retornar as propriedades
title,authorepublicationYear, respectivamente. - 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.
123456789101112131415161718192021222324252627282930313233343536const 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);
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
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
Desafio: 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:
- Ordenar o array de livros:
- Ordenar pelo título em ordem crescente;
- Ordenar pelo autor em ordem decrescente;
- Ordenar pelo ano em ordem decrescente.
- 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.
123456789101112131415161718192021222324252627282930313233343536const 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);
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
- Para ordenar por título, utilize
localeCompare()com a propriedadetitle. - Para ordenar por autor, aplique
localeCompare()com a propriedadeauthor. - Para ordenar por ano, utilize uma comparação numérica baseada na propriedade
publicationYear. - Utilize o método
map()para criar novos arrays com propriedades específicas. - Crie uma função de callback para
map()que retorne a propriedade desejada para cada livro. - Para extrair títulos, autores e anos, as funções de callback devem retornar as propriedades
title,authorepublicationYear, respectivamente. - 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.
123456789101112131415161718192021222324252627282930313233343536const 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);
Obrigado pelo seu feedback!