0
var myStringArray = ["abcd", "efgh", "ijkl"], foundResult = false;

myStringArray.forEach(function(currentString) {
    if (/\d+/.test(currentString)) {
        console.log("Number found");
        foundResult = true;
    }
});

if(foundResult === false) {
    console.log("Number NOT found");
}

这段代码就是为了演示这个问题。我必须使用一个额外的变量来检查是否有匹配。有没有优雅的方法来处理这个没有变量?

编辑:我知道我可以使用some,但我想匹配不匹配的情况以及在代码的最后一个if条件中看到的情况。

4

2 回答 2

5

使用一些方法:

if(["abcd", "efgh", "ijkl"].some(function(i){return /\d+/.test(i)})){
    // if matched
} else {
    // handle no match
}
于 2013-11-08T09:21:10.520 回答
0

使用 forEach 的另一种方法是:

var a = ['abcd', 'efgh', 'ijkl'];
var r;

if (a.forEach(function(a){r = r || /\d/.test(a)}) || r) {
 alert('found a number');

} else if (r === false) {
 alert('no numbers');
}

但可能任何支持forEach的 UA也将支持一些,并且一些也可能更有效,因为它会在true.

于 2013-11-08T09:50:28.940 回答