从字符串单词中订购数组的最简单方法 - 有趣



我正在写一个儿童游戏,它由字母块组成。

孩子必须按照正确的顺序(跟随剪影)放置积木来拼写单词

现在我的问题是我有 2 个数组。

var myLetters = new Array(
    new BlockC(),
    new BlockA(),
    new BlockB()
);
public static var myLetters2 = new Array(
    new BlockC(),
    new BlockA(),
    new BlockB()
);

所以你看到这是为了拼写单词 C A B。

我想做的是有一个字符串变量,我可以将单词放入其中,然后让代码以正确的顺序填充数组。

var word:string = "CAB";

希望这是有道理的,我可以从你们那里得到一些很好的帮助

谢谢

如果我正确理解了这个问题,这里有一种方法可以做到:

var word:String = "CAB";
var letterClassMapping:Object = {
 "C":BlockC,
 "A":BlockA,
 "B":BlockB
};
var myLetters:Array = [];
for(var i:int=0; i<word.length; i++) {
  myLetters.push( new letterClassMapping[word.charAt(i)]() );
}

另一种方法是使用 getDefinitionByName 来获取类类型:

var classType:Class = getDefinitionByName("Block" + word.charAt(i)) as Class;
myLetters.push(new classType());

你似乎需要一个带有相应类的字母集合。因此,您使自己成为以下结构的对象:

private static var LETTERS:Object={A:BlockA,B:BlockB,C:BlockC};
然后

你用单个字母拆分你的单词(将单词中的一个字母复制到一个新字符串中),然后你可以通过LETTERS[letter]获得相应的类,并通过new LETTERS[letter]();获得该类的新实例

你也可以在你的对象和 thant join 数组中创建 toString() 函数。

在类中创建函数:

public class BlockA {
        public function toString():String {
           return "A";
        }
}

并且比 您可以连接数组项:

var arr:Array = [new BlockA , new BlockB , new BlockC];
trace(arr.join(""));
// and compare to Your string:
arr.join("") == word;

最新更新