59 votos

Comprueba si la matriz está vacía o existe

Para la carga de la primera página necesito comprobar si hay una imagen en image_array y cargar la última imagen, de lo contrario bloquear los botones de vista previa; avisar al usuario para que pulse el botón de nueva imagen; crear una matriz vacía para poner allí las imágenes;

El problema es que image_array en el else se dispara todo el tiempo. Si existe un array, lo anula, pero el alert no funciona.

if(image_array.length > 0)
    $('#images').append('<img src="'+image_array[image_array.length-1]+'" class="images" id="1" />');
else{
    $('#prev_image').attr('disabled', 'true');
    $('#next_image').attr('disabled', 'true');
    alert('Please get new image');
    var image_array = [];
}

ACTUALIZACIÓN Antes de cargar el html tengo algo como esto

<?php if(count($images) != 0): ?>
<script type="text/javascript">
    <?php echo "image_array = ".json_encode($images);?>
</script>
<?php endif; ?>

110voto

jbabey Puntos 20696
if (typeof image_array !== 'undefined' && image_array.length > 0) {
    // the array is defined and has at least one element
}

Su problema puede estar ocurriendo debido a una mezcla de variables globales implícitas y la elevación de variables. Asegúrate de usar var cuando se declara una variable:

<?php echo "var image_array = ".json_encode($images);?>
// add var  ^^^ here

Y luego asegúrate de no redeclarar accidentalmente esa variable más tarde:

else {
    ...
    image_array = []; // no var here
}

34voto

Pooyan Khosravi Puntos 422

Para comprobar si una matriz está vacía o no.

De manera explícita

  typeof array != "undefined"
  && array != null
  && array.length != null
  && array.length > 0

Camino compacto

  if(typeof array != "undefined" && array != null && array.length > 0){}

CoffeeScript Way

  if array?.length > 0

¿Por qué?

Caso no definido

La variable indefinida es una variable a la que aún no le has asignado nada.

aray = new Array();          // "aray" !== "array"
typeof array == "undefined"; // => true

Caso cero

En general, nulo es un estado de falta de valor. Por ejemplo, una variable es nula cuando se pierde o no se recupera algún dato.

array =  searchData(); // can't find anything
array == null;         // => true

El caso no es un conjunto

Javascript tiene un sistema de tipo dinámico. Esto significa que no podemos garantizar qué tipo de objeto contiene una variable.
Existe la posibilidad de que no estemos hablando con una instancia de Array.

supposedToBeArray =  new SomeObject();
typeof supposedToBeArray.length;       // => "undefined"

array = new Array();
typeof array.length;                   // => "number"

Caja vacía de la matriz

Ahora, desde que probamos todas las demás posibilidades, estamos hablando con una instancia de Array.

Para asegurarnos de que no está vacío, preguntamos sobre el número de elementos que tiene, y asegurarse de que tiene más de cero elementos.

firstArray = [];
firstArray.length > 0;  // => false
secondArray = [1,2,3];
secondArray.length > 0; // => true

5voto

Mike Brant Puntos 39322

Si quieres comprobar si la variable de la matriz de la imagen ha sido definida puedes hacerlo así

if(typeof image_array === 'undefined') {
    // it is not defined yet
} else if (image_array.length > 0) {
    // you have a greater than zero length array
}

2voto

Samson Puntos 1747

Deberías usar:

  if (image_array!=undefined && image_array.length > 0)

2voto

Mayank Raipure Puntos 343

Usa JQuery isEmptyObject para comprobar si el array 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

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X