2016-11-23 107 views
0

我想在一个步骤中实例化一组键值对,但我无法弄清楚如何。自动编号在我的用例中不起作用。我只能使它在两个步骤工作:如何在TypeScript中使用键值对实例化一个数组?

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

我想什么是能够做到的,这是大多数其他编程语言的版本:

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

有任何方式在TypeScript中做到这一点?

编辑:因为我需要将数据传递到其期待的阵列的接口我不能使用的对象。

+0

你真的想要一个稀疏的数组,或者你真的想要一个key-> value对象的键是数字吗? –

+0

@RyanCavanaugh:我想要一个数组,因为这些键可能会经常变化,所以很难为对象定义类型。即我想避免定义'let army:{100:string,1000:string,...}',因为那样会挫败目的。 –

+1

我想知道你在问哪些其他的编程语言可用?为什么不是一个关键/价值对象对你有好处?为什么它打败了目的? –

回答

4

有在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"] 

code in playground

的问题是,为什么不使用一个对象作为键/图来存储这些数据?使用数组(它基本上是一个对象本身)有什么不同?

+0

谢谢!只是坚持两个步骤,因为它仍然比创建一个对象更简洁,只是将它转换为数组。 –

相关问题