如何从类型脚本中的数组访问对象

时间:2020-07-13 05:33:21

标签: angular typescript

我在数组中有一个这样的对象列表:

    [
      0: {name: "John", data: 0: [{age: 24}, {icon: "04d"}]},
      1: {name: "Vicky",data: 0: [{age: 25}, {icon: "06d"}]},
      2: {name: "John2",data: 0: [{age: 26}, {icon: "05d"}]},
      4: {name: "John3",data: 0: [{age: 27}, {icon: "09d"}]},
    ]

我正在尝试访问此类对象。

    *ngFor="let weather_data of weather_data_info" 

在我的HTML中,但是我无法访问上面的元素,任何人都可以告诉我我做错了什么,也可以使用其他任何替代方法

1 个答案:

答案 0 :(得分:1)

由于JS没有这种类型,因此您需要将关联数组转换为数组。

您的内部数据也无效

data: 0: [{age: 24}, {icon: "04d"}]
// This is not a valid structure

您需要从数组中删除键:

const weather_data_info = [
              {name: "John", data: {0: [{age: 24}, {icon: "04d"}]}},
              {name: "Vicky",data: {0: [{age: 25}, {icon: "06d"}]}},
              {name: "John2",data: {0: [{age: 26}, {icon: "05d"}]}},
              {name: "John3",data: {0: [{age: 27}, {icon: "09d"}]}},
];

或者,如果您想将index键用作ID,则可以将其转换为对象并使用Object.values()Object.keys()对其进行迭代:

const data = {
          0: {name: "John", data: {0: [{age: 24}, {icon: "04d"}]}},
          1: {name: "Vicky",data: {0: [{age: 25}, {icon: "06d"}]}},
          2: {name: "John2",data: {0: [{age: 26}, {icon: "05d"}]}},
          4: {name: "John3",data: {0: [{age: 27}, {icon: "09d"}]}},
};
const weather_data_info = Object.keys(data).reduce((acc, key) => {
    acc.push({...data[key], id: key});
    return acc;
},[]);

console.log(weather_data_info)