我可以使用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
答案 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等。