2017-07-31 86 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 
} 
相关问题