en javascript, ¿cómo puedo crear una matriz vacía de un tamaño dado

Pseudo código:

X = 3;
createarray(myarray, X, "");

de salida:

   myarray = ["","",""]
InformationsquelleAutor gus | 2016-01-22

7 Comentarios

  1. 40
    var arr = new Array(5);
    console.log(arr.length) //5
    • Que no crea ninguna miembros, se crea una matriz vacía con una longitud de 5. Un equivalente literal de matriz es [,,,,,].
    • El OP preguntó in javascript how would I create an empty array of a given size. Esto resuelve el problema.
    • El OP ha proporcionado un ejemplo de «vacío».
    • Bueno esta es otra opción a la pregunta. Se puede elegir cualquiera de las respuestas proporcionadas, que es la gloria de stackoverflow 🙂
    • esto funciona bien para lo que estoy haciendo
  2. 150

    1) Para crear la nueva matriz de la cual no puede iterar sobre, puede utilizar el constructor de array:

    Array(100) o new Array(100)


    2) Se puede crear una nueva matriz, que puede ser iterado como la siguiente:

    a) Todas las versiones de JavaScript

    • Matriz.aplicar:
      Array.apply(null, Array(100))

    b) De ES6 versión de JavaScript

    • Desestructuración del operador:
      [...Array(100)]
    • Matriz.el prototipo.llenar
      Array(100).fill(undefined)
    • Matriz.de
      Array.from({ length: 100 })

    Puede asignar más de estas matrices, como el de abajo.

    • Array(4).fill(null).map((u, i) => i) [0, 1, 2, 3]

    • [...Array(4)].map((u, i) => i) [0, 1, 2, 3]

    • Array.apply(null, Array(4)).map((u, i) => i) [0, 1, 2, 3]

    • Array.from({ length: 4 }).map((u, i) => i) [0, 1, 2, 3]

    • Que quieres decir, de la Matriz.el prototipo.relleno (>=ES5), derecho?
    • De la matriz.el prototipo.relleno (>=ES6) kangax.github.io/compat-tabla/es6/…;
    • La iluminación del día – cuando se menciona en la parte (a) que se creará un nuevo array utilizando el constructor de la sintaxis no es ni siquiera iteratable. Javascript realmente sorprende a veces.
    • Esto debe ser aceptado respuesta
    • ¿Cuál es el tamaño de Array(10000) con empty x 10000?
    • Su longitud es de 10000, se puede comprobar mediante la console.log(Array(10000).length) Pero si ejecuta Array(10000).forEach((u, i) => console.log(i)), obtendrá ningún resultado
    • Array.apply('x', Array(10)) es en realidad [undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined]

  3. 30

    Utilizamos Array.from({length: 500}) desde 2017.

    • No veo que sea votado y mío que se votó. La razón?
    • No sé por qué le pusieron los votos. Te di un voto, a pesar de que su solución es un poco menos intuitivo que este.
    • Gracias por confirmar que no hay nada malo con mi solución ☺.
  4. 12

    Trate de usar while bucle, Array.prototype.push()

    var myArray = [], X = 3;
    while (myArray.length < X) {
      myArray.push("")
    }

    Alternativamente, el uso de Array.prototype.fill()

    var myArray = Array(3).fill("");
    • .fill() es una elegante con un forro de solución. Gracias!
  5. 8

    Si quieres una matriz vacía de undefined elementos, usted podría simplemente hacer

    var whatever = new Array(5);

    esto le daría

    [undefined, undefined, undefined, undefined, undefined]

    y, a continuación, si usted quería ser llenado con cadenas vacías, usted podría hacer

    whatever.fill('');

    que le daría

    ["", "", "", "", ""]

    Y si quieres hacerlo en una sola línea:

    var whatever = Array(5).fill('');
    • new Array(2) no dar [undefined, undefined]. Se le da una matriz que no es iterable.
    • Array(2) no se puede [undefined, undefined] y es absolutamente iterable. Esto sólo sucede que con la vainilla JS del forEach(), que supongo es lo que se está utilizando para probar su teoría, la de devolución de llamada no se invoca por los elementos de la matriz que no se han inicializado (como undefined sería). Sin embargo, si se utilizan otros métodos iterativos, como jQuery $.each(), se puede ver que el undefined valores están de hecho presentes: $.each(new Array(5), function(index, element) { console.log('element:', element) }).
    • Si necesitas más pruebas de que Array(5) es iterable, mi ejemplo de uso de fill() es que la prueba – como fill() itera a través de una matriz y la rellena con un valor estático. Y, como se puede ver, Array(5).fill('') produce ["", "", "", "", ""].
    • OK. Hay algo más que no entiendo. Estoy creando una nueva matriz con new Array(2) y lo que recibo es [ <2 empty items> ] no [undefined, undefined]. El uso de .map en la antigua no tiene ningún efecto. Sin embargo, me pueden recorrer con un for...of bucle. Si puedo crear una nueva matriz de uso de la notación literal a = [undefined, undefined] entonces puedo usar .map en él.
    • Ni idea – es totalmente posible que algo en ese sentido ha cambiado con cómo JS instancia Array objetos, ya que mi respuesta fue dada hace casi 4 años. _(ツ)_/
  6. -3

    Yo haría esto:

    function emptyArray(length){
      var a = [];
      for(var i=0,l=length; i<l; i++){
        a.push('');
      }
      return a;
    }
    var empty10 = emptyArray(10);

    si quieres Cadenas vacías, de lo contrario

    var empty10 = new Array(10);

    va a hacer realmente un Array vacío.

Dejar respuesta

Please enter your comment!
Please enter your name here