猿问

如何让数组中的对象将其读取为 toUpperCase?

此函数在没有 .toUpperCase 方法的情况下工作。但我想让它与 toUpperCase 一起工作。我该怎么办?我目前正在从 udemy 课程学习 Javascript:


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){

        return item.title.toUpperCase() === noteTitle.toUpperCase()

    })


    return notes[index]

}


const note = findNote(notes, 'Office modification')

console.log(note)


吃鸡游戏
浏览 134回答 2
2回答

冉冉说

由于您没有提供错误日志,我只能猜测出了什么问题:您RefernceError在回调中有一个。如果是这种情况,原因如下:const notes = [     {},{请注意,您在数组中有一个空对象notes,并且title在item.title.toUpperCase()评估undefined导致 a 的原因ReferenceError时,只需删除空对象即可解决此问题。它没有工作的原因toUpperCase是因为没有取消引用title,你只是在它上面使用 === 并不关心它是否是undefined.

精慕HU

您可以添加检查您的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)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答