validate nodejs how empty array jquery arrays is-empty

jquery - nodejs - Compruebe si la matriz está vacía o nula



is empty jquery (4)

Me gustaría saber cómo verificar si una matriz está vacía o nula en jQuery. Intenté array.length === 0 pero no funcionó. Tampoco arrojó ningún error.

Este es el código:

var album_text = new Array(); $("input[name=''album_text[]'']").each(function(){ if( $(this).val() && $(this).val() != '''') { album_text.push($(this).val()); } }); if (album_text.length === 0) { $(''#error_message'').html("Error"); } else { // send data }


Creo que es peligroso usar $ .isEmptyObject de jquery para verificar si la matriz está vacía, como mencionó @jesenko. Acabo de conocer ese problema.

En el documento isEmptyObject , menciona:

El argumento siempre debe ser un objeto JavaScript simple

que puedes determinar por $.isPlainObject . El retorno de $.isPlainObject([]) es falso.


Debería verificar '''' (cadena vacía) antes de ingresar a su matriz. Su matriz tiene elementos que son cadenas vacías. Entonces tu album_text.length === 0 funcionará bien.


El usuario JQuery es EmptyObject para verificar si la matriz contiene elementos o no.

var testArray=[1,2,3,4,5]; var testArray1=[]; console.log(jQuery.isEmptyObject(testArray)); //false console.log(jQuery.isEmptyObject(testArray1)); //true


Siempre que su selector esté funcionando, no veo nada incorrecto con su código que verifique la longitud de la matriz. Eso debería hacer lo que quieras. Hay muchas maneras de limpiar su código para que sea más simple y más legible. Aquí hay una versión limpia con notas sobre lo que limpié.

var album_text = []; $("input[name=''album_text[]'']").each(function() { var value = $(this).val(); if (value) { album_text.push(value); } }); if (album_text.length === 0) { $(''#error_message'').html("Error"); } else { //send data }

Algunas notas sobre lo que estabas haciendo y lo que he cambiado.

  1. $(this) es siempre un objeto jQuery válido, por lo que no hay motivo para verificar if ($(this)) . Puede que no tenga ningún objeto DOM dentro, pero puedes verificarlo con $(this).length si es necesario, pero eso no es necesario aquí porque el .each() no se ejecutaría si no hubiera elementos. $(this) dentro de tu .each() siempre será algo.
  2. Es ineficaz usar $ (esto) varias veces en la misma función. Es mucho mejor conseguirlo una vez en una variable local y luego usarlo desde esa variable local.
  3. Se recomienda inicializar matrices con [] lugar de una new Array() .
  4. if (value) cuando se espera que el valor sea una cadena, ambas protegerán del value == null , value == undefined y value == "" por lo que no tiene que hacer if (value && (value != "")) Puede hacer: if (value) para verificar las tres condiciones vacías.
  5. if (album_text.length === 0) le dirá si la matriz está vacía, siempre que sea una matriz válida inicializada (que está aquí).

¿Qué estás tratando de hacer con este selector $("input[name=''album_text[]'']") ?