从一个不存在数据的数组中获取元素。

问题描述 投票:0回答:1

我想在一个数组中循环使用元素

data = [];

data[3] = true;
data[4] = false;

for (i = 1; i <= data.len(); i++) {
    if(data[i])   {
        writeoutput("Kittens!")
    }
}

我得到一个错误

enter image description here

不能选择

我的代码是一个更大的过程的简化。以下不是一个选项

for (datum in data) {
    if(datum)   {
        writeoutput("Kittens!")
    }
}
arrays coldfusion cfml coldfusion-2018
1个回答
2
投票

你总是可以通过渠道的国王...

<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。


4
投票

除非我错过了这一点,否则这就是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。


0
投票

另一种方法是使用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>
© www.soinside.com 2019 - 2024. All rights reserved.