簡體   English   中英

迭代數組中的多個對象時測試匹配的更好方法

[英]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 為1234userSelectedBook

但是,即使將控制台日志放在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM