Попробуйте это:
// Filter input fields object
var filterData = {
"title" : "Things You dont know",
"author": "Rohit Jindal",
"year": 1953
};
// Data object
var items = [
{
"id":"1",
"author": "Chinua Achebe",
"country": "Nigeria",
"imageLink": "images/things-fall-apart.jpg",
"language": "English",
"link": "https://en.wikipedia.org/wiki/Things_Fall_Apart\n",
"pages": 209,
"title": "Things Fall Apart",
"year": 1958
},{
"id":"2",
"author": "Rohit Jindal",
"country": "Nigeria",
"imageLink": "images/things-fall-apart.jpg",
"language": "English",
"link": "https://en.wikipedia.org/wiki/Things_Fall_Apart\n",
"pages": 209,
"title": "Things You dont know",
"year": 1953
},{
"id":"3",
"author": "Author Name",
"country": "Nigeria",
"imageLink": "images/things-fall-apart.jpg",
"language": "English",
"link": "https://en.wikipedia.org/wiki/Things_Fall_Apart\n",
"pages": 209,
"title": "Welcome to JavaScript",
"year": 1947
}
];
// Logic to check for all the three filters data and give the output
var filteredItems = items.filter(obj => {
if ((obj.title.toLowerCase().indexOf(filterData.title.toLowerCase()) > -1) &&
(obj.author.toLowerCase().indexOf(filterData.author.toLowerCase()) > -1) &&
(obj.year == filterData.year)) {
return obj;
}
});
console.log(filteredItems);
Примечание: В соответствии с ОП, я предполагаю, что все три поля (название, автор и год) являются обязательными.