如何在Typescript中从JSON中获取多维数组?

bvjveswy  于 2022-11-19  发布在  TypeScript
关注(0)|答案(2)|浏览(111)

下面是一个JSON数组。

var cars = {
    "cars": {
        "john": [],
        "alex": [
            "ford"
        ],
        "hilton": [],
        "martin": [
            "ford",
            "ferrari"
        ],
        "david": [
            "Lamborghini"
        ],
        ...
    }

}

我想从这里得到数组。我应该如何在Typescript中实现它?我尝试了几种方法,但都不起作用。还有一个JSON数组,只有名称,如下所示,但我不知道如何使用它。

var names = { 
    "names": [
        "john",
        "alex",
        "hilton",
        "martin",
        "david",
        ...
    ]
}

我试着像拉风箱一样,但不起作用。

let aryCars: string[][] = [];
names.map((name: string) => {
    cars[name].map((car: string) => {
        aryCars[name].push(car);
    });
});

但出现以下错误。
Element implicitly has an 'any' type because index expression is not of type 'number'.
如果你知道怎么做请告诉我。谢谢。

lp0sw83n

lp0sw83n1#

大概是因为这些台词:

let aryCars: string[][] = [];

aryCars[name].push(car);

我们已经将aryCars声明为一个数组,它隐式地具有数字索引,但是我们使用的是字符串name
也许您实际上希望aryCars看起来像这样:

const aryCars: { [key:string]: string[] } = {};

该对象具有字符串键和作为值的字符串数组。
那么您的代码将是:

const aryCars: { [key:string]: string[] } = {};
names.forEach((name: string) => {
    aryCars[name] = cars[name]
});

但请注意,您显示的names是一个名为names的对象,其属性也称为names,这意味着您必须执行以下操作:

names.names.forEach(...)

如果这不是您要查找的内容,请显示您期望的输出。

5vf7fwbs

5vf7fwbs2#

数组不能有字串索引。请改用对象类型,例如:

let aryCars: {
    [key: string]: string
} = {};

然后,您可以使用数组标记法存取对象。

相关问题