Hola, soy un principiante que aprende javascript (esta es mi primera pregunta) y he pasado horas tratando de resolver lo siguiente. No puedo encontrar una respuesta en línea, por lo que cualquier ayuda sería muy apreciada :)
Tengo una lista de libros que son objetos dentro de una matriz. Las propiedades son el nombre (el valor es una cadena) y si el libro es el más vendido o no (el valor es un valor booleano). Vea abajo
const books = [ { name: 'Book 1', bestSelling: true,}, { name: 'Book 2', bestSelling: false,}, { name: 'Book 3', bestSelling: true,}, ];Lo que intento hacer es acceder a los valores más vendidos de la matriz. En primer lugar, ¿cómo haría esto?
En segundo lugar, ¿cómo escribiría una función que, si hubiera al menos un libro que no fuera el más vendido, devolvería falso en general, y si todos los artículos dentro de la matriz fueran los más vendidos, devolvería verdadero?
Se me ocurrió lo siguiente, pero no parece funcionar:
let won = 0 for (let i = 0; i> books.length; i++) { if (books[I].bestSeller === false) { return false; } } return true; }¿Algunas ideas? Gracias por adelantado.
Use books[index].bestSelling para acceder a los booleanos y puede usar Array#every() para verificar si todos los libros son los más vendidos; devuelva true ; de lo contrario, devuelva false .
const books = [ { name: 'Book 1', bestSelling: true}, { name: 'Book 2', bestSelling: false}, { name: 'Book 3', bestSelling: true} ]; //accessing booleans books[i].bestSelling eg console.log( books[0].bestSelling ); //function to return true only if all books are best selling function isBestSeller(books) { return books.every(book => book.bestSelling); } console.log( isBestSeller( books ) );NOTA:
return books.every(book => book.bestSelling); es equivalente a:
return books.every(function(book) { return book.bestSelling; });Y toda la función se puede reescribir como:
const isBestSeller = books => books.every(book => book.bestSelling);Lo que intento hacer es acceder a los valores más vendidos de la matriz. En primer lugar, ¿cómo haría esto?
Puede lograrlo mediante el uso del método Array.filter() .
const books = [ { name: 'Book 1', bestSelling: true,}, { name: 'Book 2', bestSelling: false,}, { name: 'Book 3', bestSelling: true,}, ]; const bestSellingBooks = books.filter((obj) => obj.bestSelling); console.log(bestSellingBooks);En segundo lugar, ¿cómo escribiría una función que, si hubiera al menos un libro que no fuera el más vendido, devolvería falso en general, y si todos los artículos dentro de la matriz fueran los más vendidos, devolvería verdadero?
Puede lograr esto usando el método Array.some() .
const books = [ { name: 'Book 1', bestSelling: true,}, { name: 'Book 2', bestSelling: false,}, { name: 'Book 3', bestSelling: true,}, ]; const bestSellingBooks = books.some((obj) => !obj.bestSelling); console.log(bestSellingBooks ? false : true);