Typescript Convert Object to Array - 因为 \*ngFor 不支持对象的迭代

新手上路,请多包涵
  • 我不想像这样使用 for 循环将对象转换为数组!如果将过程加倍并减慢应用程序的性能(我正在使用 Ionic2 和 Typescript,以及 Firebase)

for(输入数据) { array.push(value); }

是否有任何解决方案可以使用 *ngFor 迭代对象本身(如附图所示)。

或者我可以将此对象(如附图所示)转换为数组,以便在 *ngFor 中可迭代。

在此处输入图像描述

原文由 Ankit Maheshwari 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 761
2 个回答

您可以使用 Object.keys(obj) 来获取命名索引。这将返回一个数组结构,您可以进一步使用/自定义它。用于迭代对象值的示例可能如下所示

var persons = {
    john: { age: 23, year:2010},
    jack: { age: 22, year:2011},
    jenny: { age: 21, year:2012}
}

获取迭代器

var resultArray = Object.keys(persons).map(function(personNamedIndex){
    let person = persons[personNamedIndex];
    // do something with person
    return person;
});

// you have resultArray having iterated objects

原文由 Farooq Ahmed Khan 发布,翻译遵循 CC BY-SA 3.0 许可协议

标准库函数 Object.entries 为您做到这一点。 文档

这是在函数中使用 Object.entries 将(键 - > A 类型对象)的对象转换为具有属性 name 和键的 A 类型对象列表的示例作为 name 属性的值:

 function f<A>(input: { [s: string]: A }): (A & {name: string})[] {
  return Object.entries(input)
    .map(a => {
      return {name: a[0], ...a[1]}
    })
}

原文由 Moebius 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏