2017-07-31 38 views
-3

當我有以下陣列(只是一個簡單的例子):的Javascript的indexOf不是一個函數使用整數

books:[ 
      {id: 1, isbn: '0226020452', title: 'The Bridge on the Drina', author: 'Ivo Andrić', 
      description: '', 
       added: '2017-07-29' 
      }, 
      {id: 2, isbn: '9781628724189', title: 'Bosnian Chronicle: A Novel', author: 'Ivo Andrić', 
       description: '', 
       added: '2017-07-29' 
      }, 
      {id: 3, isbn: '9781856100229', title: 'Damned Yard and Other Stories', author: 'Ivo Andrić', 
       description: '', 
       added: '2017-07-29' 
      }, 

當我試圖執行以下功能我得到這個錯誤遺漏的類型錯誤:book.id.indexOf不是功能

updateBook: function (state, updateBook) { 

    let foundBook = state.books.filter((book) => { 
      return book.id.indexOf(parseInt(updateBook.id, 10)) >= 0; 
    }) 

    console.log(foundBook); 

    Object.assign(state.book[foundBook], updateBook); 
    } 

這是怎麼回事?

+2

'id'是一個數字,不是數組或字符串...? –

+1

我認爲你需要'==',即'book.id == parseInt(updateBook.id,10)'並且注意'filter()'會返回給你一個數組 – Satpal

+0

@NinaScholz - id是一個整數。 – Sasha

回答

1

您可以使用Array#findIndex獲取數組的索引。

let index = state.books.findIndex(book => book.id === updateBook.id); 

console.log(foundBook); 
if (index !== -1) { 
    // update existing book 
    Object.assign(state.book[index], updateBook); 
} else { 
    // insert new book 
} 
相關問題