让我说我有以下数组:
['1', '1/2', 'fresh', 'tomatoes']
我如何获取以字母开头的第一个项目的索引,在这种情况下为“新鲜”?
请注意,它应该适用于每个字母,而不仅限于特定字母。
谢谢。
答案 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;
}
}
}