访问数组中对象内的布尔值



嗨,我是学习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);

最新更新