我想在一个数组中循环使用元素
data = [];
data[3] = true;
data[4] = false;
for (i = 1; i <= data.len(); i++) {
if(data[i]) {
writeoutput("Kittens!")
}
}
我得到一个错误
不能选择
我的代码是一个更大的过程的简化。以下不是一个选项
for (datum in data) {
if(datum) {
writeoutput("Kittens!")
}
}
你总是可以通过渠道的国王...
<cfscript>
data = [];
data[3] = true;
data[4] = false;
for (i = 1; i <= data.len(); i++) {
if( data[i]?:false ) {
writeoutput("Kittens!");
}
else { writeoutput("nope"); }
}
</cfscript>
https:/trycf.comgistd8664be620520252871e91796bef2f61acf2016?主题=monokai。
除非我错过了这一点,否则这就是arrayIsDefined()的作用,比如。
<cfscript>
data = [];
data[2] = javaCast( "null", 0 );
data[3] = true;
data[4] = false;
for (i = 1; i <= data.len(); i++) {
if(arrayIsDefined(data,i) && data[i]) {
writeoutput("Kittens!");
}
}
</cfscript>
这个fiddle演示了上面的内容,并确认它也能安全地处理数组中存在的一个显式设置的空元素。https:/cffiddle.orgappfile?filepath=97b96317-8dcd-4620-a953-2c895191a8dc67ccc09d-f4b5-4a2e-93d6-4cf3269a29d319c13ebe-1af4-4c72-9d7c-4cb82fa58f13.cfm。
另一种方法是使用trycatch。
<cfscript>
data = [];
data[3] = true;
data[4] = false;
for (i = 1; i <= data.len(); i++) {
try {
if(data[i]) {
writeoutput("Kittens!" & i & "<br>")
}
}
catch (any e) {
writeoutput("puppies " & i & "<br>");
}
}
</cfscript>