【问题标题】:How do we create object literals from arrays of object in javascript?我们如何从 javascript 中的对象数组创建对象字面量?
【发布时间】:2020-11-17 02:32:15
【问题描述】:

我们如何在 javascript 中从对象数组创建对象字面量? ,这样我就可以使用值或数字来访问名称,例如我有文字对象

#literal 示例对象

SAMPLE_LITERALS {
  '1': 'Sample1',
  '2': 'Sample2',
  '3': 'Sample3',
  '4': 'Sample4'
}

然后我可以访问一个值,例如 SAMPLE_LITERALS[4],结果将是 Sample4。

我想在下面的对象样本数组上实现这样的功能。将提供帮助。谢谢。

我想访问这个名字。

#代码查询

 const team = await TeamsModel.findAll({
    where: {
      deletedAt: { [Op.eq]: null },
    },
  });

#结果

[
        {
            "id": 1,
            "name": "Admin",
            "createdAt": "2019-12-10T07:01:16.000Z",
            "updatedAt": "2019-12-10T07:01:16.000Z",
            "deletedAt": null,
            "createdById": null,
            "updatedById": null,
            "createdBy": null,
            "updatedBy": null
        },
        {
            "id": 2,
            "name": "Customer Support",
            "createdAt": "2019-12-10T07:01:16.000Z",
            "updatedAt": "2019-12-10T07:01:16.000Z",
            "deletedAt": null,
            "createdById": null,
            "updatedById": null,
            "createdBy": null,
            "updatedBy": null
        },
]

【问题讨论】:

  • 你自己试过什么?
  • Object.fromEntries(result.map(obj => [obj.name, obj]))
  • 您的第一个 sn-p 是一个对象,您可以通过键名访问其属性值。您的第二个数据结构是对象数组,您可以使用Array.prototype.find() 或通过项目的索引访问其元素。如果您的目标是第二个结构的类数组对象,您可以使用Object.assign({}, ...arr.map(o => ({[o.id]: o})))

标签: javascript node.js typescript javascript-objects


【解决方案1】:

假设您想在 id 上建立索引,这是一种非常简单的方法:

const teamsAsObject = {};
teams.forEach(team => {
  teamsAsObject[team.id] = team;
});

【讨论】:

  • TeamsModel.findAll({where: {deletedAt: { [Op.eq]: null }}}) 看起来不像我们正在尝试按 id 索引。
  • 我的目标是使用 id 从对象数组中访问名称值
  • @Michael Pratt ,例如,然后我可以在循环外访问 TEAM_NAME[1] 之类的值,该值将是 Admin
  • Code Query 那么与您的问题无关吗?如果您只想从表示为result 的数据中收集name 属性,那很简单:teams.map(t => t.name)。我以为你在寻找更多。
  • 如果您出于某种原因只需要一个团队名称列表,那么@ScottSauyet 的代码将为您工作。但是,如果您想访问团队对象上的所有属性,则需要为每个属性创建一个列表,这(在我看来)并不理想。我建议使用我的解决方案创建一个地图并以这种方式访问​​属性:teamsAsObject[1].name
猜你喜欢
  • 2016-07-11
  • 2015-03-05
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 2010-11-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多