2016-01-18 2 views
-1

В 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" и "Я продавать Apple"

Спасибо,

EDIT

Вот что я сделал до сих пор:

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 код идти искать переменную PHP с loader5.

Все изделия, найденные php, помещаются в массив (products). И создается список всех продуктов. (createListItem).

Если я нажму на элемент, он покажет мне некоторые детали (цена, описание..etc). Это функция showDetails();

Знаю, что я создал searchBar (автозаполнение). Создан массив (arr), который разделяет строку (str).

Затем он делает то, что он делает для поиска по массиву.

Проблемы: 1/Причудливо, не все слова отображаются в моем поискеБар. Некоторые слова работают, другие нет. 2/Как мне сделать, чтобы вызвать функцию showDetails(), когда пользователь нажимает на подсказку term? (term.addEventListener (MouseEvent.CLICK, showDetails)); не работает как terms не item.title. ShowDetails показывает детали item.title. (так как я могу сказать, что term = item.title?)

3/Вы видите путь, более простой?

+0

Я ничего не могу найти в Google. Я только нахожу некоторые коды, чтобы найти слово, но не для того, чтобы получить полное предложение. – user3094896

+0

Здесь я редактировал свой пост. Код немного уродлив, поэтому я попросил метод, не показывая мой код раньше. – user3094896

ответ

0

Ваш myHugeArray просто строка, поэтому split() его \n', вы получили массив в отставке, например, а затем найти один содержит слово, поиск, как «яблоко», используя indexof() в каждой строке

+0

Рассмотрите возможность сделать свой ответ более полезным, показывая пример. – BadFeelingAboutThis