嗨,我是学习javascript的初学者(这是我的第一个问题(,花了几个小时试图解决以下问题。在网上找不到答案,因此非常感谢您的帮助:(
我有一个书的列表,这些书是数组中的对象。属性包括名称(值为字符串(和书籍是否畅销(值为布尔值(。见下文
const books = [
{ name: 'Book 1',
bestSelling: true,},
{ name: 'Book 2',
bestSelling: false,},
{ name: 'Book 3',
bestSelling: true,},
];
我想做的是访问阵列中的畅销值。首先我该怎么做。
其次,如果有至少一本书不是畅销书,那么我该如何编写一个函数?如果数组中的每一本都是畅销书,则整体返回true?
我想出了以下方法,但似乎不起作用:
let won = 0
for (let i = 0; i> books.length; i++) {
if (books[I].bestSeller === false) {
return false;
}
} return true;
}
有什么想法吗?提前谢谢。
使用books[index].bestSelling
访问布尔值,您可以使用Array#every()
检查所有书籍是否最畅销-返回true
-否则返回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 ) );
注意:
return books.every(book => book.bestSelling);
相当于:
return books.every(function(book) {
return book.bestSelling;
});
整个函数可以重写为:
const isBestSeller = books => books.every(book => book.bestSelling);
我要做的是访问数组中的畅销值。首先我该怎么做。
您可以通过使用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);
其次,如果至少有一本书不是畅销书,那么我该如何编写一个函数,如果数组中的每一本书都是畅销书,则整体返回false,如果数组内的每一项都是畅销品,则返回true?
您可以通过使用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);