2 回答
TA贡献1877条经验 获得超1个赞
由于您没有提供错误日志,我只能猜测出了什么问题:您RefernceError
在回调中有一个。如果是这种情况,原因如下:
const notes = [ {},{
请注意,您在数组中有一个空对象notes
,并且title
在item.title.toUpperCase()
评估undefined
导致 a 的原因ReferenceError
时,只需删除空对象即可解决此问题。
它没有工作的原因toUpperCase
是因为没有取消引用title
,你只是在它上面使用 === 并不关心它是否是undefined
.
TA贡献1845条经验 获得超8个赞
您可以添加检查您的notes数组对象是否具有属性title。可以使用hasOwnProperty检查:
if (fooObject.hasOwnProperty('title'))
或者在你的情况下:
item.hasOwnProperty('title')
但是,我们希望找到titlekey 不存在的情况并省略这些对象,因为如果不存在title,则意味着没有方法toUpperCase()。所以可以用运算符!(NOT)检查:
if (!item.title) // `NOT` + undefined gives `true`
return false;
所以整个代码看起来像这样:
const notes = [
{},
{
title: 'My next trip',
body: 'I would like to go to Spain'
},
{
title: 'Habbits to work on',
body: 'Excercise, Eat a bit better'
},
{
title: 'Office modification',
body: 'Get a new seat'
}
]
function findNote(notes, noteTitle) {
const index = notes.findIndex(function (item, index) {
if (!item.title)
return false;
return item.title.toUpperCase() === noteTitle.toUpperCase()
})
return notes[index]
}
const note = findNote(notes, 'Office modification')
console.log(note)
添加回答
举报