【问题标题】:How to dynamically get a list of objects from an array using an array of values如何使用值数组从数组中动态获取对象列表
【发布时间】:2021-02-03 18:26:24
【问题描述】:

我有一个对象列表(称为 this.listOfDesserts):

每个对象 (this.listOfDesserts) 包含以下内容:

我还有一个名为 this.relevantColumns 的变量,它是通过如下代码行动态生成的:

this.relevantColumns = this.listOfCakes.summaryCakes.numberOfUsers;

最终结果始终是一个数组。例如,它可能等于 ['1305','1306']

如何从 this.listOfDesserts 中生成索引为所有对象的列表(在第二张图片中,我相信它由紫色表示,例如 1304,1305,1306,1307,1308,header,id)等于数组的值(this.relevantColumns)?

在此示例中,我如何能够在 this.listOfDessert 中获得索引为 1305 和 1306 的所有对象的列表,而无需硬编码?

一切都是动态编写的,所以我不能真正使用像 this.variableName[1304] 这样的硬编码行。

【问题讨论】:

  • 这看起来与this question 非常相似。那是一份动物清单,而不是甜点清单,但除此之外,同样的问题。
  • 删除所有图像并放入一些数据,这有助于获得良好的答案。
  • 这是一个类似的问题,但尝试了所选的解决方案,它只导致 [undefined, undefined, ob: Observer]

标签: javascript arrays json loops variables


【解决方案1】:

有两个阶段。

一、获取所有值的完整字典

listOfDesserts = [{ 1: {obj: 1}, 2: {obj: 2}} , {3: {obj: 3}}]
listOfDessertsFlattened = Object.assign({}, ...listOfDesserts) // { '1': { obj: 1 }, '2': { obj: 2 }, '3': { obj: 3 } }

二、映射相关列,从数组中获取结果:

listOfDessertsFlattened = { 1: {obj: 1}, 2: {obj: 2}, 3: {obj: 3}};
relevantColumns = [1, 3];
result = relevantColumns.map((columnName) => listOfDessertsFlattened[columnName]) //[ { obj: 1 }, { obj: 3 } ]

【讨论】:

  • 我尝试使用 result = relatedColumns.map((n) =>listOfDessertsFlattened[n]) 但它导致了 [undefined, undefined, ob: Observer]。我相信这可能是因为它是一个对象数组,其中每个对象包含多个对象:[0: {1304: {},1305: {}, 1306: {}] 等]。
  • 如果它是硬编码的,这似乎可以工作:listOfDessertsFlattened[0][1304],有没有办法动态地做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多