Skip to content

📚 Hoje você vai aprender o que são Higher Order Functions e vai conhecer algumas funções desse tipo que são utilizadas com arrays.✏️

Notifications You must be signed in to change notification settings

EduSouza-programmer/Trybe_Exercicio_8-1_Edu_Souza

Repository files navigation

Image Trybe

Exercício 8-1: JS_ES6 - Higher Order Functions--forEach, find, some, every, sort - Concluído o/ o/ o/

“Quanto mais você estuda, mais aprende e se aproxima de realizar seu sonhos!”

Made by Eduardo Souza   Github page Edu Souza   License

Sobre o Exercício  |   Entrega  |   Licença

🚀 Sobre o Exercício

Estes exercícios praticam os conceitos de Higher Order Functions associados a outros já vistos, como arrow functions, template literals, objetos e temas dos fundamentos. Essa mistura de conceitos é muito importante para seu aprendizado, então use tudo o que sabe para resolver os exercícios!

Entrega

Sumário

  • 1. Encontre o nome da primeira pessoa autora do livro nascida no ano de 1947;

  • 2. Retorne o nome do livro de menor nome;

  • 3. Encontre o primeiro livro cujo nome possui 26 caracteres;

  • 4. Ordene os livros por data de lançamento em ordem decrescente;

  • 5. Faça uma função que retorne true, se todas as pessoas autoras nasceram no século XX, ou false, caso contrário;

  • 6. Faça uma função que retorne true, se algum livro foi lançado na década de 80, e false, caso contrário;

  • 7. Faça uma função que retorne true, caso nenhum author tenha nascido no mesmo ano, e false, caso contrário;

Exercícios [Implementações]

Encontre o nome da primeira pessoa autora do livro nascida no ano de 1947.

Resposta:

Código Javascript
const assert = require("assert");

const books = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: {
			name: "George R. R. Martin",
			birthYear: 1948,
		},
		releaseYear: 1991,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: {
			name: "J. R. R. Tolkien",
			birthYear: 1892,
		},
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: {
			name: "Isaac Asimov",
			birthYear: 1920,
		},
		releaseYear: 1951,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: {
			name: "Frank Herbert",
			birthYear: 1920,
		},
		releaseYear: 1965,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: {
			name: "Stephen King",
			birthYear: 1947,
		},
		releaseYear: 1986,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: {
			name: "H. P. Lovecraft",
			birthYear: 1890,
		},
		releaseYear: 1928,
	},
];

function authorBornIn1947() {
	const author = books.find(({ author }) => author.birthYear === 1947);
	return author.author.name;
}

assert.strictEqual(authorBornIn1947(), "Stephen King");

Back Sumário

Retorne o nome do livro de menor nome.

Resposta:

Código Javascript
const assert = require("assert");

const books = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: {
			name: "George R. R. Martin",
			birthYear: 1948,
		},
		releaseYear: 1991,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: {
			name: "J. R. R. Tolkien",
			birthYear: 1892,
		},
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: {
			name: "Isaac Asimov",
			birthYear: 1920,
		},
		releaseYear: 1951,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: {
			name: "Frank Herbert",
			birthYear: 1920,
		},
		releaseYear: 1965,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: {
			name: "Stephen King",
			birthYear: 1947,
		},
		releaseYear: 1986,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: {
			name: "H. P. Lovecraft",
			birthYear: 1890,
		},
		releaseYear: 1928,
	},
];

function smallerName() {
	let nameBook;
	books.reduce((acc, book) => {
		if (book.name.length < acc) {
			acc = book.name.length;
			nameBook = book.name;
		}
		return acc;
	}, 50);

	return nameBook;
}

assert.strictEqual(smallerName(), "Duna");

Back Sumário

Encontre o primeiro livro cujo nome possui 26 caracteres.

Resposta:

Código Javascript
const assert = require("assert");

const books = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: {
			name: "George R. R. Martin",
			birthYear: 1948,
		},
		releaseYear: 1991,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: {
			name: "J. R. R. Tolkien",
			birthYear: 1892,
		},
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: {
			name: "Isaac Asimov",
			birthYear: 1920,
		},
		releaseYear: 1951,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: {
			name: "Frank Herbert",
			birthYear: 1920,
		},
		releaseYear: 1965,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: {
			name: "Stephen King",
			birthYear: 1947,
		},
		releaseYear: 1986,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: {
			name: "H. P. Lovecraft",
			birthYear: 1890,
		},
		releaseYear: 1928,
	},
];

const expected_result = {
	author: {
		birthYear: 1948,
		name: "George R. R. Martin",
	},
	genre: "Fantasia",
	id: 1,
	name: "As Crônicas de Gelo e Fogo",
	releaseYear: 1991,
};

function getNamedBook() {
	const nameBook = books.find(({ name }) => name.length === 26);
	return nameBook;
}

assert.deepEqual(getNamedBook(), expected_result);

Back Sumário

Ordene os livros por data de lançamento em ordem decrescente.

Resposta:

Código Javascript
const assert = require("assert");

const books = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: {
			name: "George R. R. Martin",
			birthYear: 1948,
		},
		releaseYear: 1991,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: {
			name: "J. R. R. Tolkien",
			birthYear: 1892,
		},
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: {
			name: "Isaac Asimov",
			birthYear: 1920,
		},
		releaseYear: 1951,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: {
			name: "Frank Herbert",
			birthYear: 1920,
		},
		releaseYear: 1965,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: {
			name: "Stephen King",
			birthYear: 1947,
		},
		releaseYear: 1986,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: {
			name: "H. P. Lovecraft",
			birthYear: 1890,
		},
		releaseYear: 1928,
	},
];

const expected_result = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: { name: "George R. R. Martin", birthYear: 1948 },
		releaseYear: 1991,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: { name: "Stephen King", birthYear: 1947 },
		releaseYear: 1986,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: { name: "Frank Herbert", birthYear: 1920 },
		releaseYear: 1965,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: { name: "J. R. R. Tolkien", birthYear: 1892 },
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: { name: "Isaac Asimov", birthYear: 1920 },
		releaseYear: 1951,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: { name: "H. P. Lovecraft", birthYear: 1890 },
		releaseYear: 1928,
	},
];

function booksOrderedByReleaseYearDesc() {
	const booksReleaseYear = books.sort(
		({ releaseYear: a }, { releaseYear: b }) => b - a
	);
	return booksReleaseYear;
}

assert.deepEqual(booksOrderedByReleaseYearDesc(), expected_result);

Back Sumário

Faça uma função que retorne true, se todas as pessoas autoras nasceram no século XX, ou false, caso contrário.

Resposta:

Código Javascript
const assert = require("assert");

const books = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: {
			name: "George R. R. Martin",
			birthYear: 1948,
		},
		releaseYear: 1991,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: {
			name: "J. R. R. Tolkien",
			birthYear: 1892,
		},
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: {
			name: "Isaac Asimov",
			birthYear: 1920,
		},
		releaseYear: 1951,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: {
			name: "Frank Herbert",
			birthYear: 1920,
		},
		releaseYear: 1965,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: {
			name: "Stephen King",
			birthYear: 1947,
		},
		releaseYear: 1986,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: {
			name: "H. P. Lovecraft",
			birthYear: 1890,
		},
		releaseYear: 1928,
	},
];

const expected_result = false;

function everyoneWasBornOnSecXX() {
	const isBornOnSecXX = books.every(
		({ author: { birthYear } }) => birthYear >= 1901
	);
	return isBornOnSecXX;
}

assert.strictEqual(everyoneWasBornOnSecXX(), expected_result);

Back Sumário

Faça uma função que retorne true, se algum livro foi lançado na década de 80, e false, caso contrário.

Resposta:

Código Javascript
const assert = require("assert");
const { constants } = require("crypto");

const books = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: {
			name: "George R. R. Martin",
			birthYear: 1948,
		},
		releaseYear: 1991,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: {
			name: "J. R. R. Tolkien",
			birthYear: 1892,
		},
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: {
			name: "Isaac Asimov",
			birthYear: 1920,
		},
		releaseYear: 1951,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: {
			name: "Frank Herbert",
			birthYear: 1920,
		},
		releaseYear: 1965,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: {
			name: "Stephen King",
			birthYear: 1947,
		},
		releaseYear: 1986,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: {
			name: "H. P. Lovecraft",
			birthYear: 1890,
		},
		releaseYear: 1928,
	},
];

const expected_result = true;

function someBookWasReleaseOnThe80s() {
	const someReleaseOnThe80s = books.some(
		({ releaseYear }) => releaseYear > 1981 && releaseYear < 1990
	);
	return someReleaseOnThe80s;
}

assert.strict(someBookWasReleaseOnThe80s(), expected_result);

Back Sumário

Faça uma função que retorne true, caso nenhum author tenha nascido no mesmo ano, e false, caso contrário.

Resposta:

Código Javascript
const assert = require("assert");

const books = [
	{
		id: 1,
		name: "As Crônicas de Gelo e Fogo",
		genre: "Fantasia",
		author: {
			name: "George R. R. Martin",
			birthYear: 1948,
		},
		releaseYear: 1991,
	},
	{
		id: 2,
		name: "O Senhor dos Anéis",
		genre: "Fantasia",
		author: {
			name: "J. R. R. Tolkien",
			birthYear: 1892,
		},
		releaseYear: 1954,
	},
	{
		id: 3,
		name: "Fundação",
		genre: "Ficção Científica",
		author: {
			name: "Isaac Asimov",
			birthYear: 1920,
		},
		releaseYear: 1951,
	},
	{
		id: 4,
		name: "Duna",
		genre: "Ficção Científica",
		author: {
			name: "Frank Herbert",
			birthYear: 1920,
		},
		releaseYear: 1965,
	},
	{
		id: 5,
		name: "A Coisa",
		genre: "Terror",
		author: {
			name: "Stephen King",
			birthYear: 1947,
		},
		releaseYear: 1986,
	},
	{
		id: 6,
		name: "O Chamado de Cthulhu",
		genre: "Terror",
		author: {
			name: "H. P. Lovecraft",
			birthYear: 1890,
		},
		releaseYear: 1928,
	},
];

const expected_result = false;

function authorUnique() {
	const isAuthorBornEqual = books.every(
		(everyBook) =>
			!books.some(
				(someBook) =>
					someBook.author.birthYear === everyBook.author.birthYear &&
					someBook.id !== everyBook.id
			)
	);
	return isAuthorBornEqual;
}

assert.equal(authorUnique(), expected_result);

Back Sumário

Licença

Este projeto está licenciado sob a Licença MIT - consulte LICENSE para maiores detalhes.

About

📚 Hoje você vai aprender o que são Higher Order Functions e vai conhecer algumas funções desse tipo que são utilizadas com arrays.✏️

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published