Я пытаюсь зарегистрировать текущий статус чтения, но вместо получения только журнала я также получаю пустой массив при вызове displayInformation(). Как я могу получить результат, который я хочу, без дополнительного пустого массива? и почему он возвращает пустой массив?Метод фильтра JavaScript, возвращающий фильтрованный массив и пустой массив
function displayInformation() {
function statusRead(obj){
if (obj.readingStatus === false) {
console.log('You still need to read ' + obj.title + ' by ' + obj.author + '.');
} else {
console.log('Already read ' + obj.title + ' by' + obj.author + '.');
}
}
var statusFilter = library.filter(statusRead);
console.log(statusFilter);
}
var library = [
{
title: 'Bill Gates',
author: 'The Road Ahead',
readingStatus: true
},
{
title: 'Steve Jobs',
author: 'Walter Isaacson',
readingStatus: true
},
{
title: 'Mockingjay: The Final Book of The Hunger Games',
author: 'Suzanne Collins',
readingStatus: false
}
];
displayInformation();
При вызове displayInformation() это, Что записывается в консоль
"Already read Bill Gates byThe Road Ahead."
"Already read Steve Jobs byWalter Isaacson."
"You still need to read Mockingjay: The Final Book of The Hunger Games by Suzanne Collins."
[]
Ваш 'statusRead()' возвращает 'undefined', поэтому 'Array.filter()' отбрасывает эти элементы. Вместо этого вы должны использовать 'library.forEach (statusRead)' – Nayuki
Прежде чем использовать незнакомый метод, [прочитайте его документацию] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ Array/фильтр). Тогда вы узнаете, как это работает, и правильно ли это решение вашей проблемы. –