Quiero crear una matriz de pares clave-valor en un solo paso, pero no puedo averiguar cómo. Numeración automática no funciona en mi caso de uso. Sólo puedo hacer que funcione en dos pasos:

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

De lo que me gustaría ser capaz de hacer, que está disponible en la mayoría de los otros lenguajes de programación:

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

Hay alguna forma de hacer esto en el Manuscrito?

Edición: que no puedo usar un objeto como el que necesito para pasar los datos a una interfaz que está a la espera de una matriz.

  • ¿Usted realmente desea una matriz dispersa, o ¿usted realmente desea una clave->valor de objeto cuyas claves son los números?
  • Quiero una matriz, como las llaves pueden cambiar con frecuencia, lo que hace difícil definir un tipo de un objeto. es decir, quiero evitar la definición de let army: {100: string, 1000: string, ...}, como ese tipo de derrotas el propósito.
  • Me pregunto en que otros lenguajes de programación lo que estamos pidiendo es disponible? ¿Por qué no una clave/valor de objeto bueno para usted? ¿por qué la derrota el propósito?
  • Podría escribir let army: { [key: number]: string }. Es por eso que estoy pidiendo.
  • Está disponible en la mayoría de los lenguajes de scripting (PHP, Python, etc.)
  • Ah, yo no era consciente de que podría definir como objetos de eso. Yo también tenía problemas de iterar sobre las propiedades de un objeto, sino que se fija ahora. Sin embargo, tengo que pasar los datos a un componente que está a la espera de una matriz, así que realmente no tienen una opción. 🙁
  • En php se puede tener una matriz indexada que es como una matriz regular en js, y una de las matrices asociativas que son como los objetos js. Python tiene listas y dicts que también son como js matriz/objeto

InformationsquelleAutor Marco Roy | 2016-11-23

1 Comentario

  1. 4

    No existe tal funcionalidad en javascript, pero usted puede crear fácilmente que:

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

    (código en el patio de recreo)

    La pregunta es ¿por qué no usar un objeto como clave/mapa para almacenar este tipo de datos? ¿Qué se hace uso de una matriz (que es básicamente un objeto en sí mismo)?

    • Gracias! Creo que voy a seguir con los dos pasos, aunque, como parece aún más limpio que la creación de un objeto sólo para convertirla en una matriz.

Dejar respuesta

Please enter your comment!
Please enter your name here