PDA

Просмотр полной версии : как узнать, есть ли такая буква в массиве?


Fr@ddy
25.08.2005, 17:31
Как узнать, есть ли такая буква в массиве?Допустим в input_text вводится буква, а флеш проверяет, есть ли эта буква в массиве, если есть то, например в dinamic_text выводится "буква "такая-то" найдена".

Вот как я пытался написать скрипт (он привязан к кадру), также на этом кадре находится два окна: Input text и Dinamic text (имена я им точно такие же задал).

//вот сам скрипт
var bykvu;
bykvu = ["а","б","в","г","д"] //стоко букв хватит... ;)
_root.onEnterFrame=function() {
if (_root.input_text==_root.bykvu) {
_root.dinamic_text="буква "+_root.input_text+" найдена"
}else{
_root.dinamic_text="буква "+_root.input_text+" не найдена"
}
}

У меня почему-то не работает :(

silin
25.08.2005, 17:44
посмотри так:
var bykvu = ["а", "б", "в", "г", "д"];
input_text.onChanged=function(){
for(var i in bykvu) if (this.text==bykvu[i]) {
trace ("найдена :" + bykvu[i]);
return;
}
trace(this.text+" (не найдена)");
}

iNils
25.08.2005, 23:21
можно сделать ассоциативный массив, где индекс есть сама буква. тогда не надо каждый раз делать обход массива.

Король
25.08.2005, 23:28
жаль флеш не поддерживает ассоциативные массивы

iNils
25.08.2005, 23:39
жаль флеш не поддерживает ассоциативные массивы
Приехали...
a = new Array ();
a["q"] = 1;
a["w"] = 1;
trace (a["q"]);
trace (a["w"]);
trace (a["e"]);

Король
26.08.2005, 00:02
е... я сильно отстал от жизни) спасибо, iNils
хотя использовать объекты привычнее

iNils
26.08.2005, 00:07
хотя использовать объекты привычнее
дело вкуса :) я использую и то и другое.

Iv
26.08.2005, 02:48
2Король: флэш реализован так, что поддерживает ТОЛЬКО ассоциативные массивы в общепрограммном смысле слова (во загнул, хехе).

2Fr@ddy: если тебе нужны именно буквы, то вот еще вариант:

isInArray = function (arr, letter) {
return arr.join("").indexOf(letter) == -1 ? false : true
}

но у меня закрадывается большое подозрение что тебе нужно просто посмотреть в хелпе слово restrict.

Король
26.08.2005, 03:17
BitSky?

iNils
26.08.2005, 12:27
уууу, вспомнил тему на форуме.... про массивы в том числе что типа все хранится как строки отсюда тормоза. сколько копий сломали тогда...

Fr@ddy
26.08.2005, 15:17
Отлично! Всё работает! Всем спасибо! :)

Но теперь немного другой вопрос? Возможно сделать так, допустим буква найдена в массиве "bykvu_rus" , а её надо заменить на букву, которая находится в массиве "bykvu_ang" в том же индексе?

KidsKilla
26.08.2005, 16:08
bukvy = {а:"a", б:"b", в:"v" ....... э:"e", ю:"iu", я:"ya"};
trace([ bukvy["a"],bukvy["б"],bukvy["я"] ])

Fr@ddy
27.08.2005, 14:05
bukvy = {а:"a", б:"b", в:"v" ....... э:"e", ю:"iu", я:"ya"};
trace([ bukvy["a"],bukvy["б"],bukvy["я"] ])
Проверил.Не работает.

Король
27.08.2005, 14:51
bukvy = {а:"a", б:"b", в:"v" ....... э:"e", ю:"iu", я:"ya"};
trace(bukvy.a) - вот так надо

Fr@ddy
28.08.2005, 10:11
все равно буквы не заменяются.
может, если у тебя (король) всё работает и есть исходник, кинь плиз...

silin
28.08.2005, 11:52
да работает все (и bukvy.a и bukvy["a"]),
глянь

Fr@ddy
28.08.2005, 17:14
:) урааааа! заработало! :d круто! так я и хотел... спасибо за помощь!