as3如何在向量中搜索

时间:2013-11-12 09:57:55

标签: actionscript-3 search vector

我可以使用indexOf在数组中进行搜索,但vector不起作用

import flash.events.KeyboardEvent;

var characters:Vector.<String >  = Vector.<String > (["abcdef".split("")]);
trace(characters);

txt.restrict = characters.toString();
txt.addEventListener(KeyboardEvent.KEY_DOWN,search);
function search(event:KeyboardEvent):void
{
    var i:int = characters.indexOf(String.fromCharCode(event.charCode));
    trace("key press= "+String.fromCharCode(event.charCode),"indexOf search ="+i);
}

输出

a,b,c,d,e,f
key press= a indexOf search =-1

2 个答案:

答案 0 :(得分:2)

这是因为你的向量只包含一个元素,即数组a,b,c,d,e,f"abcdef".split("")会返回array = [a,b,c,d,e,f]。当您在其周围使用另一个[]时,它会创建另一个数组,即["abcdef".split("")]是一个长度为1 [[a,b,c,d,e,f]]的数组。因此,您的向量包含一个单独的元素array = [a,b,c,d,e,f]

要解决此问题,您需要删除[]来电中的Vector()

var characters:Vector.<String >  = Vector.<String > ("abcdef".split(""));

答案 1 :(得分:0)

问题characters = Vector.<String > (["abcdef".split("")]);这句话。

它将所有字母存储在矢量的第0个位置,如[0] =“a,b,c,d,e,f”。但在你的情况下,需要存储在不同的索引,如

[0] =“a”

[1] =“b”

[2] =“c”

[5] =“f”

如果是这样它会起作用。也是为什么你试图限制这些价值,如a,b,c等。