如何在一个巨大的数组中搜索特定的单词?

时间:2016-01-18 01:19:46

标签: arrays actionscript-3

在AS3中: 我在数组中有一个长文本。

var myHugeArray:Array = ["I love Apple
I have an Iphone
I eat a Banana
I'm John
I sell a computer
I sell an Apple
I love rock
I sell a car"];

如何搜索特定字词? (比如:用“apple”这个词给我看句子) - >输出:“我爱苹果”和“我卖苹果”

谢谢,

修改

这是我到目前为止所做的:

loader5.load(urlReq);
loader5.addEventListener(Event.COMPLETE,completeHandler2);

function completeHandler2(event:Event):void{
            loader5.removeEventListener(Event.COMPLETE,completeHandler2);
            trace("Données envoyées");
            feedbackText.text = "Données envoyées";
                loader5.load(urlReq);
                loader5.addEventListener(Event.COMPLETE, complete);
}

function complete(e:Event):void {
    addChild(list);
    products = JSON.parse(loader5.data) as Array;
    feedbackText.text = "complete";
    for(var i:int = 0; i < products.length; i++){
        createListItem(i, products[i]);
    }
    showList();
}

function createListItem(index:int, item:Object):void {

    var listItem:TextField = new TextField();
    listItem.text = item.title;
    listItem.addEventListener(MouseEvent.CLICK, function(e:MouseEvent):void {
     showDetails(item);
    });
    list.addChild(listItem);
    str = item.title;
    bar();
}

function bar(){
    var arr: Array  ;
searchBar.type = TextFieldType.INPUT;   
var suggested:Array = new Array();
     var textfields:Array = new Array();
searchBar.addEventListener(Event.CHANGE, suggest);
arr = str.split(",");
trace(arr);


         function suggest(e:Event):void
        {
            suggested = [];

            for (var i:int = 0; i < textfields.length; i++)
            {
                removeChild(textfields[i]);
            }

            textfields = [];

            for (var j:int = 0; j < arr.length; j++)
            {
                if (arr[j].indexOf(searchBar.text.toLowerCase()) != -1)  
                {
                    var term:TextField = new TextField();
                    term.width = 360;
                    term.height = 24;
                    term.x = 18;
                    term.y = (24 * suggested.length) + 135;
                    term.border = true;
                    term.borderColor = 0x353535;
                    term.background = true;
                    term.backgroundColor = 0xFF9900;
                    term.textColor = 0x4C311D;
                    term.defaultTextFormat = format;
                    addChild(term);
                    suggested.push(arr[j]);

                    term.text = arr[j];
                }

            }

function showList():void {
    list.visible = true;
}


function showDetails(item:Object):void {
    titleTxt.htmlText = item.title;
    detailsTxt.htmlText = "<U>prix:</U> " + item.prix + " xpf"+ "\n\n<U>Description:</U> " + "\n"+item.theDescription + "\n"+"\n\n<U>Contact:</U> " + item.mail+ "\n"+item.phone;
    }       

所以,我的AS3代码用loader5搜索PHP变量。

php发现的所有项目都放在一个数组(products)中。 并创建所有产品的列表。 (createListItem)。

如果我点击一个项目,它会显示一些细节(价格,描述等等)。这是函数showDetails();

知道我已经创建了一个searchBar(自动完成)。 创建一个分组字符串(arr)的数组(str)。

然后它执行搜索数组所做的工作。

问题: 1 /奇怪的是,并非所有单词都显示在我的searchBar中。有些词是有效的,有些则没有。 2 /当用户点击建议showDetails()时,如何调用函数term? (term.addEventListener(MouseEvent.CLICK,showDetails));由于terms不是item.title,因此不起作用。 ShowDetails正在显示item.title的详细信息。 (那我该怎么说term = item.title?)

3 /你看到比这简单的方法吗?

2 个答案:

答案 0 :(得分:0)

您的myHugeArray只是字符串,所以split()只有\n',你得到了 例如ret数组,然后找到一个包含你搜索的单词,比如&#34; apple&#34;,在每个字符串中使用indexof()

答案 1 :(得分:0)

您需要将字符串拆分为数组,然后搜索每个项目 看一下这个 https://stackoverflow.com/a/34842518/3623547