检查[i]是否存在
问题描述:
我试图运行一个脚本,如果[i]存在(意思是存在[i]的值,任何值)或另一部分运行if [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>
答
for(var i=0;i<data.length;i++){
if(data[i]){
code1 runs
} else {
code2 runs
}
}
这是假设你迭代虽然数组和一些数组中的对象是null
。否则,这个循环将永远不会超过最后一个数组索引,所以没有必要保护它,除非在数组中实际上有null
。
请注意,这也会失败一个零,因为在javascript中被认为是零。如果这是你的情况有问题,你可以用null
对照,并在循环外,你可以检查,看看如果一个数组的索引值都通过:
if (typeof(data[i]) === 'undefined') {
这将看看在该索引处是否有值,可能是false,零,null或其他任何内容,并且此测试会通过。
但是,在该循环内,它保证在数组范围内。
+0
没有办法,我的意思是,它什么都不做:S – Shadow 2010-12-10 09:55:25
答
如果你之前只是创建了一行,'i'不能存在吗?
如果被设置为undefined内环路您可以检查:
for(var i=0;i<data.length;i++){
if(i){
//code1 runs
}
else{
//code2 runs
}
}
答
您的代码:
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
}
}
'data [i]'应该是什么?它会存在,因为你正在循环现有的元素。你想知道它是否为空? – 2010-12-10 09:47:51
是的,我需要知道它是空还是不存在,然后继续执行其余代码 – Shadow 2010-12-10 10:07:35
它不能**不存在,因为它是数据数组/对象的元素。您需要告诉我们在数据中应该看到如何测试它们的存在。 – 2010-12-10 10:11:20