检查[i]是否存在

时间:2010-12-10 09:43:13

标签: javascript

我正在尝试运行一个脚本,如果[i]存在(意味着有[i]的值,任何值)或者如果[i]没有值则运行其他部分,我希望部分运行,谁能让我高兴?

我说的是for循环,比如

for(var i=0;i<data.length;i++){
if(var i == doesnt exist){
code1 runs
}
else{
code2 runs
}

继承人html中的代码

<script>
function funfacts(o){
    var facts = document.getElementById('funfacts');
    var data = o.query.results.a;
    for(var i=0;i<data.length;i++){
        var out = document.createElement('a');
        facts.appendChild(out);
        out.href = data[i].href;
        out.innerHTML = data[i].alt;
        out.appendChild(document.createElement('br'));
    }
}
</script>

4 个答案:

答案 0 :(得分:1)

for(var i=0;i<data.length;i++){
  if(data[i]){
    code1 runs
  } else {
    code2 runs
  }
}

这假设您正在迭代数组,并且该数组中的一些对象是null。否则,此循环将永远不会超过最后一个数组索引,因此除非您在数组中实际拥有null,否则无需保护它。

请注意,这也会在零上失败,因为在javascript中零被视为false。如果这是您的问题,可以将其与null

进行比较
if (data[i] !== null) {

在循环外部,您可以通过以下方式检查数组是否在索引处具有值:

if (typeof(data[i]) === 'undefined') {

这将查看该索引是否有值,可以是false,zero,null或其他任何内容,此测试将通过。

但同样,在该循环中,它保证在数组范围内。

答案 1 :(得分:1)

您的代码:

for(var i=0;i<data.length;i++){
   if(var i == doesnt exist){
      code1 runs    // this will never be executed
   }
   else{
      code2 runs
   }
}  // I don't see this brace in your code, so I assume it's here

相当于:

for(var i=0;i<data.length;i++){
    code2 runs
}  

也许你的意思是:

if(data.length == 0) {
   code2 runs
}
else {
   for(var i=0;i<data.length;i++){
      code 1 runs
   } 
}

答案 2 :(得分:0)

if(var i != null)

应该为你做的工作

您可能还想查看How do I setup an "if object exists" condition?

答案 3 :(得分:0)

如果你之前刚创建了一行,我怎能不存在?

您可以通过以下方式检查循环中是否设置为未定义:

for(var i=0;i<data.length;i++){
   if(i){
      //code1 runs
   }
   else{
     //code2 runs
   }
}