当页面第一次加载时,我需要检查image_array中是否有图像,并加载最后一张图像。

否则,我禁用预览按钮,提醒用户按新的图像按钮,并创建一个空数组来放置图像;

问题是else中的image_array一直被触发。如果一个数组存在-它只是覆盖它,但警报不工作。

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 = [];
}

更新 在加载html之前,我有这样的东西:

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

当前回答

如果你没有一个变量声明为数组,你可以创建一个检查:

if(x && x.constructor==Array && x.length){
   console.log("is array and filed");
}else{
    var x= [];
    console.log('x = empty array');
}

它检查变量x是否存在,如果存在,则检查它是否是一个已填充的数组。否则它会创建一个空数组(或者你可以做其他事情);

如果你确定创建了一个数组变量,有一个简单的检查:

var x = [];

if(!x.length){
    console.log('empty');
} else {
    console.log('full');
}

你可以检查我的提琴这里显示最可能的方法来检查数组。

其他回答

在我的例子中,是array_。长度总是返回0,即使它里面有值。可能是因为非默认索引。

为了检查数组是否定义了我们使用typeof _array !== 'undefined' 然后检查它是否包含任何日期,我只是简单地将它与一个空数组_array !== []

我在Javascript中遇到过很多这样的问题。对我来说,最好的方法是在检查长度之前进行广泛的检查。我在这个问答中看到了一些其他的解决方案,但我希望能够检查null或未定义或任何其他假值。

if(!array || array.length == 0){
    console.log("Array is either empty or does not exist")
}

这将首先检查未定义、空值或其他假值。如果其中任何一个为真,它将完成布尔值,因为这是一个OR。然后是更危险的数组检查。长度,如果数组是未定义的,可能会出错,可以检查。如果数组未定义或为空,这将永远不会达到,因此条件的顺序非常重要。

当你创建image_array时,它是空的,因此你的image_array。长度为0

正如下面的评论所述,我根据这个问题的答案编辑了我的答案):

var image_array = []

在else括号内,不会对前面代码中定义的image_array进行任何更改

你应该使用:

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

这个怎么样?检查未定义数组的长度可能会抛出异常。

if(image_array){
//array exists
    if(image_array.length){
    //array has length greater than zero
    }
}