I am having trouble with a small function I have written in that I cannot get the value to return properly. I am wondering if there is a better way to do this than using a .forEach
loop.
var userSelectedBook = { id: 1234 };
var bookList = [
{
id: 5678,
color: "blue"
},
{
id: 1234,
color: "red"
}
];
function getBookColor(bookList, userSelectedBook) {
const color = bookList.forEach(book => {
if (book.id === userSelectedBook.id) {
return book.color;
}
});
return color;
}
In the above case, when I call getBookColor()
I would expect to receive the response "red" because I am passing the userSelectedBook
where the ID is 1234
.
However I only get undefined
even though putting a console log within the if
statement does show the correct color
.
CodePudding user response:
forEach
is a void
function ( always returns undefined
), you need to use find
instead.
function getBookColor(bookList, userSelectedBook) {
return bookList.find(book => book.id === userSelectedBook.id)?.color;
}
CodePudding user response:
const bookList = [{id: 5678,color: "blue"},{id: 1234,color: "red"}];
function getColorForId(list,id){
return list.find(b=>b.id==id)?.color ?? "none";
}
['5678', 1234, 12345].forEach(t=>
console.log(`The book ${t} is ${getColorForId(bookList,t)}.`)
);