如果有条件,我的代码太多了。所以,我想将此代码转换为foreach循环但不知何故它不起作用。
if (str_array[0] === "1" || str_array[1] === "1" || str_array[2] === "1" || str_array[3] === "1" || str_array[4] === "1" || str_array[5] === "1" || str_array[6] === "1" || str_array[7] === "1" || str_array[8] === "1" || str_array[9] === "1" || str_array[10] === "1" || str_array[11] === "1") {
column_data[0].hidden = false;
}
if (str_array[0] === "2" || str_array[1] === "2" || str_array[2] === "2" || str_array[3] === "2" || str_array[4] === "2" || str_array[5] === "2" || str_array[6] === "2" || str_array[7] === "2" || str_array[8] === "2" || str_array[9] === "2" || str_array[10] === "2" || str_array[11] === "2") {
column_data[1].hidden = false;
}
我总共有12条if语句或条件。
for (var i = 1; i <= 12; i++) {
console.log('"' + i + '"');
if (str_array[0] === '"' + i + '"' || str_array[1] === '"' + i + '"' || str_array[2] === '"' + i + '"' || str_array[3] === '"' + i + '"' || str_array[4] === '"' + i + '"' || str_array[5] === '"' + i + '"' || str_array[6] === '"' + i + '"' || str_array[7] === '"' + i + '"' || str_array[8] === '"' + i + '"' || str_array[9] === '"' + i + '"' || str_array[10] === '"' + i + '"' || str_array[11] === '"' + i + '"') {
console.log(i - 1);
column_data[i - 1].hidden = false;
}
}
循环正常执行,我得到了价值。 "1"
中的"2"
,"3"
,"4"
,"5"
,console.log('"'+i+'"');
等。
但不知怎的,它不起作用。它正在使用静态代码但是当我把它放在循环中它不起作用。 qoutes值是否与循环和静态有关。
答案 0 :(得分:3)
您可以尝试以下
for(var i=1;i<=12;i++) {
if(str_array.includes(i.toString())) { // converting number to string
column_data[i-1].hidden = false;
}
}
供参考,Array.includes
答案 1 :(得分:1)
您可以根据str_array
长度
str_array.some( s => s == i ) //== will work fine for 1 == "1"
最后
for(var i=1;i<=12;i++)
{
var flag = str_array.some( s => s == i ) ;
if( flag )
{
column_data[i].hidden = false;
}
}
如果要将hidden属性的值设置为true,如果所有值都不是按索引,则直接将该标志分配给隐藏属性
for(var i=1;i<=12;i++)
{
column_data[i].hidden = str_array.some( s => s == i );
}