1

以下代码工作正常

var srch_str = "snow"
var str = "snow Showers Late"
alert((new RegExp(srch_str)).test(str))   //true

但是这个不是,我不明白为什么?

var weather_status = ['rain', 'cloudy', "snow", 'wind', 'thunderstorms' ]
    function getStatus(str){

        for(srch_str in weather_status){


            var bool = (new RegExp(srch_str)).test(str)
            if(bool){
                str = srch_str
                Ti.API.info("if ......")
                break;
            }
            else{
                Ti.API.info(" else ----------")
            }

        }//for

        return str
    }

输出:else ------------(5次)

打电话时getStatus("snow Showers Late")

4

1 回答 1

4

当您使用 循环时for(srch_str in weather_status)srch_str是数组的索引,而不是该索引处的元素。将正则表达式行更改为:

var bool = (new RegExp(weather_status[srch_str])).test(str);

演示:http: //jsfiddle.net/q688j/

(调试提示:console.log( srch_str )会立即指出问题所在。)

于 2013-04-13T08:32:57.467 回答