1

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

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
4

2 回答 2

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(""));
于 2013-11-12T10:17:39.563 回答
0

characters = Vector.<String > (["abcdef".split("")]);这个说法有问题。

它将所有字母存储在向量的第 0 个位置,例如 [0] = "a,b,c,d,e,f"。但是在您的情况下,需要存储在不同的索引中,例如

[0] = “一个”

[1] =“乙”

[2] = "c"

.

.

[5] = "f"

如果是这样,它将起作用。还有为什么你试图限制那些值,比如 a、b、c 等。

于 2013-11-12T10:14:38.780 回答