如何在打字稿中使用键值对实例化数组



我想在一个步骤中实例化键值对数组,但我不知道如何。自动编号在我的用例中无法使用。我只能通过两个步骤使其工作:

let army: string[] = []; army[100] = 'centuria'; army[1000] = 'legion'; ...

我想做的是在大多数其他编程语言中可用的:

let army: string[] = [ 100 => 'centuria', 1000 => 'legion', ... ];

有什么办法在打字稿中执行此操作?

编辑: 我无法使用对象,因为我需要将数据传递到期望数组的接口。

JavaScript中没有这样的功能,但是您可以轻松创建它:

function arrayFactory<T>(obj: { [key: number]: T }): T[] {
    let arr = [];
    Object.keys(obj).forEach(key => {
        arr[parseInt(key)] = obj[key];
    });
    return arr;
}
let arr = arrayFactory({ 100: "centuria", 1000: "legion" });
console.log(arr); // [100: "centuria", 1000: "legion"]

(操场上的代码)

问题是为什么不使用对象作为键/地图存储此数据?使用数组(基本上是对象本身)有何不同?

最新更新