поиск элементов в массиве

 
0
 
JavaScript
ava
Yashustik | 07.08.2007, 10:50
Добрый день.

Подскажите мне пожалуйста, как лучше решить следующую проблему:

У меня есть XML, в котором храняться ID кодов причин, необходимо заменить их на соответствующий код. Я решила сделать это при помощи 2 -х массивов:

В одном находятся коды причин, например

var Kod=new Array("0","00","01","02","03","04","05")

В другом соответствующие им ID, например

var ID_Kod=new Array("261","241","242","243","244","245","246")


Вопрос, как найти в массиве нужный элемент, например "241", чтобы узнать его индекс и найти по этому индексу соответствующий код из другого массива?
Comments (7)
ava
Leoo | 07.08.2007, 09:53 #
перебираешь весь массив и сравниваешь его с нужным значением, если оно совпало то выходишь из цикли (при этом запомнив ключь элемента), а потом по этому ключу берешь элемент из другого массива
ava
dXdYdZ | 09.08.2007, 13:21 #

get=function(id)
{
for(var n in ID_Kod) if(ID_Kod[n]==id) return Kod[n];
}
ava
AKS | 09.08.2007, 16:38 #
Ну-у-у, девушка ведь просит "как лучше"! Надо стараться, господа, в таких-то случаях. :)

Yashustik, раз уж Вам заранее известны зависимости, то можете создать объект, типа такого:

var hash = {

'261': '0',

'241': '00',

'242': '01',

'243': '02',

'244': '03',

'245': '04',

'246': '05'
};

В дальнейшем будет очень просто заменить существующее значение (которое будет "ключом") на новое - hash[someValue].
Попробуйте как-нибудь так:

var str = '244;246;';

str = str.replace(/\d+(?=;)/g, function (x) { return hash[x]; });
ava
Yashustik | 10.08.2007, 06:56 #
Спасибо за участие.
Очень интересно последнее решение.
Уважаемый AKS , поясните пожалуйста последнюю строчку, мне не понятно что делается в методе replace и почему function написана через запятую после str и заканчивается не "};" a "});". Это описка или в этом какой то глубокий смысл?

str = str.replace(/\d+(?=;)/g, function (x) { return hash[x]; });

ava
AKS | 10.08.2007, 07:09 #
Цитата (Yashustik @ 10.8.2007, 06:56 findReferencedText)
Это описка или в этом какой то глубокий смысл?

Я бы сказал: "Смысл глубочайший". smile
Вкратце - функция передается вторым параметром в метод replace (вместо строки), вызывается при каждом совпадении рега со строкой, получает аж четыре параметра, ну и возвращает для замены в строке то, что Вам захочется.

P.S. Когда я узнал об этой технике в replace, я тоже был под впечатлением от "глубокого смысла", правда я тут же все проверил-перепроверил (так что давайте и Вы проверяйте все что нужно alert'иками). :)

ava
Yashustik | 10.08.2007, 07:38 #
Ну и ну...Просто супер!!!!! Спасибо огромное.

Хотела поставить плюсиков врепутацию, но к сожалению не могу, не хватает постов .
ava
AKS | 10.08.2007, 07:50 #
smile
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  Leoo   AKS   dXdYdZ   Yashustik
advanced
Submit