【发布时间】:2012-01-20 20:46:27
【问题描述】:
我想搜索一个数组,看它是否包含特定的字符串,然后得到结果的索引。
例如,如果我有:
array[0] = "dogs";
array[1] = "cats";
array[2] = "oranges";
我希望能够搜索“oran”并返回 2。关于如何做到这一点的任何想法?
【问题讨论】:
标签: arrays flash actionscript-3 search indexof
我想搜索一个数组,看它是否包含特定的字符串,然后得到结果的索引。
例如,如果我有:
array[0] = "dogs";
array[1] = "cats";
array[2] = "oranges";
我希望能够搜索“oran”并返回 2。关于如何做到这一点的任何想法?
【问题讨论】:
标签: arrays flash actionscript-3 search indexof
你可以这样做:
function findInArray(str:String):int {
for(var i:int = 0; i < array.length; i++){
if(array[i] == str){
trace("found it at index: " + i);
return i;
}
}
return -1; //If not found
}
然后,每当您想找到某些东西时,就可以这样称呼它:
findInArray("oranges"); // Returns 2
搜索单词的一部分可能会为更大的列表返回不需要的结果,但您可以使用以下方法:
function findInArrayPartially(str:String):int {
for(var i:int = 0; i < array.length; i++){
if(array[i].indexOf(str) > -1){
trace("found it at index: " + i);
return i;
}
}
return -1; //If not found
}
【讨论】:
另一种方法:
var arr:Array = ["dogs", "cats", "oranges", "apples"];
function indexOfSubstring(array:Array, stringToFind:String):int
{
var answer:int = array.indexOf(stringToFind);
if (answer == -1)
{
var separator:String = "|";
var arrayToString:String = array.join(separator);
var indexInString:int = arrayToString.indexOf(stringToFind);
if (indexInString != -1)
{
var shorterStr:String = arrayToString.substring(0, indexInString);
answer = shorterStr.split(separator).length - 1;
}
}
return answer;
}
trace(indexOfSubstring(arr, "oran")); // returns 2
trace(indexOfSubstring(arr, "les")); // returns 3
trace(indexOfSubstring(arr, "ts")); // returns 1
trace(indexOfSubstring(arr, "broom")); // returns -1
【讨论】: