为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

吃鸡游戏 2022-07-15 10:29:22
此函数在没有 .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)
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

由于您没有提供错误日志,我只能猜测出了什么问题:您RefernceError在回调中有一个。如果是这种情况,原因如下:

const notes = [
    {},{

请注意,您在数组中有一个空对象notes,并且titleitem.title.toUpperCase()评估undefined导致 a 的原因ReferenceError时,只需删除空对象即可解决此问题。

它没有工作的原因toUpperCase是因为没有取消引用title,你只是在它上面使用 === 并不关心它是否是undefined.


查看完整回答
反对 回复 2022-07-15
?
精慕HU

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)



查看完整回答
反对 回复 2022-07-15
  • 2 回答
  • 0 关注
  • 133 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信