方法1-3是没看别人答案想出来的,个人觉得方法3还挺巧妙的(嘻嘻,小小开心一下~),不用做循环,只需要进行排序,然后判断数组第一个项即可,但是仅限于题目这种情况。

我觉得,大体上是两个方法:

  1. 直接在字符串中查找、匹配,使用正则表达式,如方法1;
  2. 将字符串拆分为数组,然后使用各种遍历操作,判断数组项的类型是否为数字或不为数字等;

所以,还可以衍生很多别的方法。

function _search(string) {
    // 方法1---------string.search() + 正则表达式
    // const regex = /\d/;
    // return string.search(regex) === -1 ? false : true;
    
    // 方法2----------split() + 遍历
    // let arr = string.split(''); // 所得数组每一项都是字符串
    // console.log(arr)
    // 这里应该也可用 forEach()、some()、filter() 方法,本质都是循环,但是不知道哪个性能更佳(未检验)
    // for(let i in arr) {
    //     let temp = parseInt(arr[i]); // 将字符串转换为number或NaN
    //     return typeof temp === 'number' ? true : false;
    // }
    
    // 方法3----------曲线救国
    let arr = string.split('').sort(); // sort() 方法排序后,会按 unicode 码排序,数字会排在前面
    return typeof parseInt(arr[0]) === 'number' ? true : false; // 只需判断第一个,只要有一个就满足
    
    // 方法4-----------展开运算符 [...string] + sort(),和上面差不多
}
_search('asob134fr')