[英]A better way to test a match when iterating over multiple objects in an array
我在使用小型 function 時遇到問題,我在其中寫道,我無法讓值正確返回。 我想知道是否有比使用.forEach
循環更好的方法來做到這一點。
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;
}
在上述情況下,當我調用getBookColor()
時,我希望收到響應“red”,因為我正在傳遞 ID 為1234
的userSelectedBook
。
但是,即使將控制台日志放在if
語句中確實顯示了正確的color
,我也只會得到undefined
。
forEach
是一個void
function (總是返回undefined
),你需要使用find
代替。
function getBookColor(bookList, userSelectedBook) {
return bookList.find(book => book.id === userSelectedBook.id)?.color;
}
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)}.`) );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.