【问题标题】:Iterate through Object properties to dynamically create an Array遍历 Object 属性以动态创建 Array
【发布时间】:2021-02-24 16:36:05
【问题描述】:

我希望能够通过迭代填充了模拟数据的 TypeScript 文件来打印 ICar 对象的数组(现在只是打印到控制台)。

ICar 模型,car.model.ts

export interface ICar {
    Make: string;
    Model: string;
    Year: string;
    Specifications: boolean[];
  }

模拟数据,car.mock.ts

export const mockCars = {
    New: [
        {
            Make: "Honda",
            Model: "CRV",
            Year: "2021",
            Specifications: [
                true,
                true,
                false,
                true,
                false
            ]
        },
        {
            Make: "Toyota",
            Model: "Camry",
            Year: "2021",
            Specifications: [
                true,
                true,
                false,
                true,
                false
            ]
        }
    ],
    PreOwned: [
        {
            Make: "Subaru",
            Model: "Forester",
            Year: "2017",
            Specifications: [
                false,
                true,
                false,
                false,
                true
            ]
        }
    ],
    Used: [
        {
            Make: "Toyota",
            Model: "Corolla",
            Year: "2015",
            Specifications: [
                false,
                false,
                true,
                true,
                false
            ]
        },
        {
            Make: "Honda",
            Model: "CRV",
            Year: "2011",
            Specifications: [
                true,
                false,
                false,
                true,
                true
            ]
        },
        {
            Make: "Mazda",
            Model: "CX-5",
            Year: "2013",
            Specifications: [
                true,
                true,
                false,
                false,
                false
            ]
        }
    ]
}

目前,我目前的解决方案主要关注与模拟数据中的New 键关联的数据值:

ngOnInit() {
        console.log(this.getTestCars());
    }
    
getTestCars(): ICar[] {

        var testArray = []; 
        var testClient = mockCars.New;

        testClient.forEach(element => {
           console.log(element.Model + " " + element.Make + " " + element.Year);
           testArray.push(element);
        });

        return testArray;
    }

我的解决方案在控制台中的输出:

CRV Honda 2021
Camry Toyota 2021

(2) [{…}, {…}]
0: {Make: "Honda", Model: "CRV", Year: "2021", Specifications: Array(5)}
1: {Make: "Toyota", Model: "Camry", Year: "2021", Specifications: Array(5)}
length: 2
__proto__: Array(0)

我希望能够从模拟数据中的所有键中获取所有对象(在此示例中,来自NewPreOwnedUsed 的值)并将它们作为 ICar 对象推送到数组中使得数组返回长度为 6。

【问题讨论】:

    标签: javascript arrays typescript object


    【解决方案1】:

    你可以拿Object.values的对象和flat它:

    const mockCars = { New: [ { Make: "Honda", Model: "CRV", Year: "2021", Specifications: [ true, true, false, true, false ] }, { Make: "Toyota", Model: "Camry", Year: "2021", Specifications: [ true, true, false, true, false ] } ], PreOwned: [ { Make: "Subaru", Model: "Forester", Year: "2017", Specifications: [ false, true, false, false, true ] } ], Used: [ { Make: "Toyota", Model: "Corolla", Year: "2015", Specifications: [ false, false, true, true, false ] }, { Make: "Honda", Model: "CRV", Year: "2011", Specifications: [ true, false, false, true, true ] }, { Make: "Mazda", Model: "CX-5", Year: "2013", Specifications: [ true, true, false, false, false ] } ]}
    
    console.log(Object.values(mockCars).flat());

    【讨论】:

      猜你喜欢
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2019-06-12
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 2015-05-17
      • 1970-01-01
      相关资源
      最近更新 更多