首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查数组是否为空或存在

检查数组是否为空或存在
EN

Stack Overflow用户
提问于 2012-07-31 23:17:28
回答 18查看 1.2M关注 0票数 461

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

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

问题是else中的image_array总是会触发。如果数组存在-它只是覆盖它,但是alert不起作用。

代码语言:javascript
复制
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之前更新,我有类似这样的东西:

代码语言:javascript
复制
<?php if(count($images) != 0): ?>
<script type="text/javascript">
    <?php echo "image_array = ".json_encode($images);?>
</script>
<?php endif; ?>
EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2012-07-31 23:30:42

代码语言:javascript
复制
if (typeof image_array !== 'undefined' && image_array.length > 0) {
    // the array is defined and has at least one element
}

您的问题可能是由于隐式全局变量和变量提升的混合造成的。确保在声明变量时使用var

代码语言:javascript
复制
<?php echo "var image_array = ".json_encode($images);?>
// add var  ^^^ here

然后确保以后不会意外地重新声明该变量:

代码语言:javascript
复制
else {
    ...
    image_array = []; // no var here
}
票数 624
EN

Stack Overflow用户

发布于 2016-02-23 03:27:09

(ECMA 5.1)怎么样:

代码语言:javascript
复制
if(Array.isArray(image_array) && image_array.length){
  // array exists and is not empty
}
票数 75
EN

Stack Overflow用户

发布于 2020-03-19 15:21:16

optional chaining

随着可选链接提案达到阶段4并得到更广泛的支持,有一种非常优雅的方法可以做到这一点。

代码语言:javascript
复制
if(image_array?.length){

  // image_array is defined and has at least one element

}
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11743392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档