[Pregunta]: Definir un arreglo vacío (javascript).

Iniciado por Leguim, 3 Enero 2021, 22:32 PM

0 Miembros y 1 Visitante están viendo este tema.

Leguim

Hola,

¿Cómo podría definir un arreglo vacío?
Me explico...

Código (javascript) [Seleccionar]

var formdata = new FormData();
var my_array = []; // esto es un arreglo vacío, si por consola imprimimos este dato nos va a devolver: []

for(var i = 0; i < my_array.length; i++)
{
     formdata.append('my_array[]', my_array[i]);
}



Como el tamaño del arreglo es 0 porque está vacío, no va a entrar en ninguna interacción y no va a agregar dicho arreglo.

Intenté con algunas otras maneras pero siempre me termina agregando un dato vacío.. "" cuando lo llamo con formdata.get('my_array[]'); y lo que yo quiero que devuelva sea: [] que significa arreglo vacío.



Mod: Sacados los comentarios a texto para mejor lectura.

#!drvy

Con ese código que tienes, formdata.get('my_array[]') va a devolver un null, por lo tanto te está indicando que no hay contenido para ese key.

Esto es un comportamiento esperado pues tal es su especificación:

https://developer.mozilla.org/en-US/docs/Web/API/FormData/get
A FormDataEntryValue containing the value. If the key doesn't exist, the method returns null.

Sospecho que tu problema es en otro frente que no nos muestras. ¿Donde te retorna un ""?


Saludos

@XSStringManolo

Que se supone que quieres saberbo hacer?

El titulo de tu pregunta es como declarar un array vacio y ya lo estás haciendo.

En tu código tienes un bucle de 0 al tamaño del array vacio, que también es 0. Asique tu bucle hace 0 iteraciones, o lo que es lo mismo, no hace nada.

Aunque iterases una vez el bucle, estás haciendo append de un elemento de una array que no tiene elementos. El array no tiene dentro []. No tiene nada dentro. [] Es para delimitar los elementos que pertenecen al array.
var myArray = [1, 3];

Pregunta algo concreto o muestra el problema que quieres resolver.

MinusFour

#3
Cita de: #!drvy en  4 Enero 2021, 00:14 AM
Sospecho que tu problema es en otro frente que no nos muestras. ¿Donde te retorna un ""?


Saludos

Yo creo que su problema está mal ejemplificado.

Código (javascript) [Seleccionar]
let fm = new FormData();
fm.append('arr', []);
console.log(fm.get('arr') === ''); //true


Es lo que probablemente este haciendo.

FormData serializa la información con String. Si tuvieras ['perro', 'gato', 'caballo'], el objeto agregaría 'perro, gato, caballo'.

No puedes almacenar objetos dentro de FormData sin que tu serializes/deserializes en cada llamada con JSON y JSON tiene sus limitaciones.

Encima, FormData no fue pensado para esto.