【问题标题】:How can I access a specific object in my array using JavaScript?如何使用 JavaScript 访问数组中的特定对象?
【发布时间】:2021-12-15 12:52:02
【问题描述】:

我创建了一个通过查询器创建的动态对象数组。 但我不知道如何访问数组中的特定对象 编辑:这就是控制台记录我的数组的方式

例如,我如何访问第二工程师(Mark)?

请记住,数组会根据用户输入而改变

team = [
  Manager {
    name: 'Nicole',
    id: '1',
    email: 'nicole@gmail.com',
    officeNumber: '5'
  },
  Engineer {
    name: 'Zoe',
    id: '2',
    email: 'zoe@gmail.com',
    github: 'zozo'
  },
  Engineer {
    name: 'Mark',
    id: '3',
    email: 'mark@gmail.com',
    github: 'emman'
  },
  Engineer {
    name: 'Joe',
    id: '4',
    email: 'joe@gmail.com',
    github: 'joey'
  }
  Intern {
    name: 'Seb',
    id: '5',
    email: 'seb@gmail.com',
    school: 'UWA'
  }
]

【问题讨论】:

  • 嗯,这实际上不是有效的代码?你跑过这个吗?除此之外,您可以使用for 循环检查team 数组中的每个对象,并查找name === "Mark" 所在的对象。这样,如果添加更多对象,它将继续工作。
  • 这不是,它只是不是一个对象字面量。这很可能是控制台记录它的方式。那么ManagerEngineerIntern 是什么?上课?然后做team.filter((obj) => obj instanceof Engineer)[1]
  • 抱歉,控制台就是这样记录的。抱歉,我对编码很陌生!感谢您的帮助:)

标签: javascript arrays javascript-objects


【解决方案1】:

首先,你的结构是错误的。

应该是:

var team = [
    {
        name: 'Nicole',
        id: '1',
        email: 'nicole@gmail.com',
        officeNumber: '5',
    },
    {
        name: 'Zoe',
        id: '2',
        email: 'zoe@gmail.com',
        github: 'zozo'
    },
    {
        name: 'Mark',
        id: '3',
        email: 'mark@gmail.com',
        github: 'emman'
    },
    {
        name: 'Joe',
        id: '4',
        email: 'joe@gmail.com',
        github: 'joey'
    },
    {
        name: 'Seb',
        id: '5',
        email: 'seb@gmail.com',
        school: 'UWA'
    }
]

要获得 mark(2),您应该使用:

team[3].name

【讨论】:

  • 他提供console.log输出,打印对象的类名。
【解决方案2】:

使用find 方法。如果没有这样的 Mark 则 find 返回 null。

如果你想找工程师马克

const result = data.find(x => {
  return x instanceof Engineer && x.name === 'Mark'  
})

[更新] 如果你想找第二工程师


const result = data.filter(x => {
  return x instanceof Engineer
})[1]

【讨论】:

  • “我如何访问第二工程师 (Mark)?” 读起来像 “如何找到第二个项目,即 Engineer,恰好在此示例中具有 name"Mark",不像 “如何找到既是 Engineer 又具有 name"Mark" 的第一项” i>.
  • @SebastianSimon 谢谢,我已经更新了答案。问题不够清楚。
  • 这是完美的谢谢!还在学习如何正确地写东西还不确定。欣赏选项
【解决方案3】:

正如Sepehr jozef 提到的结构不是那么方便。如果我们采用他的结构,您可以通过.find 方法找到它。

var team = [
{
    name: 'Nicole',
    id: '1',
    email: 'nicole@gmail.com',
    officeNumber: '5',
},
{
    name: 'Zoe',
    id: '2',
    email: 'zoe@gmail.com',
    github: 'zozo'
},
{
    name: 'Mark',
    id: '3',
    email: 'mark@gmail.com',
    github: 'emman'
},
{
    name: 'Joe',
    id: '4',
    email: 'joe@gmail.com',
    github: 'joey'
},
{
    name: 'Seb',
    id: '5',
    email: 'seb@gmail.com',
    school: 'UWA'
 }
]

const mark = team.find(function(teamMember){
    return teamMember.name === "Mark";
})

变量“mark”现在包含工程师“Mark”的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-07
    相关资源
    最近更新 更多