Javascript数组:获取以字母开头的第一项的索引

时间:2018-07-22 13:10:17

标签: javascript arrays

让我说我有以下数组:

['1', '1/2', 'fresh', 'tomatoes']

我如何获取以字母开头的第一个项目的索引,在这种情况下为“新鲜”?

请注意,它应该适用于每个字母,而不仅限于特定字母。

谢谢。

3 个答案:

答案 0 :(得分:4)

一种替代方法是使用函数findIndex和正则表达式来检查第一个字符。

假设每个字符串至少有一个字符。

let arr = ['1', '1/2', 'fresh', 'tomatoes'],
    index = arr.findIndex(s => /[a-z]/i.test(s[0]));
    
console.log(index);

答案 1 :(得分:1)

使用正则表达式,对于每个使用for循环的数组项,以及当/[a-zA-z]/返回0时,可以将search()(与字符串中的第一个字母匹配)和search(/[a-zA-Z]/)一起使用,停止并返回当前索引。

var arr = ['1', '1/2', 'fresh', 'tomatoes'];
for(var i = 0; i < arr.length; i++) {
  if(arr[i].search(/[a-zA-Z]/) == 0) {
    console.log(i);
    break;
  }
}

这是另一个解决方案,这次使用字符代码:

var arr = ['1', '1/2', 'fresh', 'tomatoes'];
for(var i = 0; i < arr.length; i++) {
  var x = arr[i][0].charCodeAt();
  if((x >= 65 && x <= 90) || (x >= 97 && x <= 122)) {
    console.log(i);
    break;
  }
}

答案 2 :(得分:0)

我的建议:

function myFunction() {
var i;  
var str = ['1', '1/2', 'fresh', 'tomatoes'];
for(i=0; i<str.length; i++){
  if (str[i].charAt(0) >= 'a' && str[i].charAt(0) <= 'z') {
     console.log(i);
  break;    
    }
 }

}