Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2011, 15:38
Интересующийся
Отправить личное сообщение для Zhiganov Посмотреть профиль Найти все сообщения от Zhiganov
 
Регистрация: 25.10.2010
Сообщений: 10

Поиск и сравнение в массиве
Здравствуйте. Код прокомментирован и надеюсь понятно, что я хочу сделать. Проблема с поиском и сравнением в массиве.
И еще подскажите наиболее простой и компактный метод удаления повторяющихся значений из массива.

function magic(){
var mytext = document.getElementById('countries').innerHTML; // получаем форматированный текст в виде страна|город#страна|город#...
var our_country = document.filterform.cscountry[document.filterform.cscountry.selectedIndex].value; // получаем страну, которую выбрал пользователь
		
var myArray = new Array();
myArray = mytext.split('#'); // делим текст на строчки страна|город и пишем в массив 
		
if (myArray.join().search(our_country) != -1) {
		myArrayCity = myArray.split('|');
		country=myArrayCity[0];
		city=myArrayCity[1];
		var anOption = document.createElement("OPTION") 
		document.filterform.cscity.options.add(anOption) 
		anOption.innerText = myArrayCity[1];
		anOption.Value = myArrayCity[1]; }
		} // если наша страна есть в какой-то строке массива, то делим ее пополам и добавляем город в select
		</script>

Последний раз редактировалось Zhiganov, 22.03.2011 в 16:17. Причина: проапдейтил код
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2011, 16:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Zhiganov,
А может без массива?
function city(country)
{
var city = 'нет';
var mytext = "страна1|город1#страна2|город2#страна3|город3#страна4|город4#страна5|город5#";
var reg = new RegExp(".*"+country+"\\|(.*?)#.*")
if(reg.test(mytext))city = mytext.replace(reg, "$1");
return city
}

alert([city('страна3'),city('страна10')])
Ответить с цитированием
  #3 (permalink)  
Старый 22.03.2011, 17:10
Интересующийся
Отправить личное сообщение для Zhiganov Посмотреть профиль Найти все сообщения от Zhiganov
 
Регистрация: 25.10.2010
Сообщений: 10

Рони, совсем не понял как этим пользоваться применительно к моему случаю, ничего не выводит.

function city(country){
		var mytext = document.getElementById('countries').innerHTML;
		var country = document.filterform.cscountry[document.filterform.cscountry.selectedIndex].value;
		var reg = new RegExp(".*"+country+"\\|(.*?)#.*");
		if(reg.test(mytext))country = mytext.replace(reg, "$1"){
		alert([city(country)]);
		}
Ответить с цитированием
  #4 (permalink)  
Старый 22.03.2011, 17:15
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Zhiganov
подскажите наиболее простой и компактный метод удаления повторяющихся значений из массива.
Почитайте здесь
Ответить с цитированием
  #5 (permalink)  
Старый 22.03.2011, 18:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Zhiganov
Рони, совсем не понял как этим пользоваться применительно к моему случаю, ничего не выводит.
Примерно так ... но если знать что вы на самом деле хотите, возможно есть проще варианты)))
<script  type="text/javascript">
function magic(){
var mytext = document.getElementById('countries').innerHTML;
var form = document.filterform;
var our_country = form.cscountry[form.cscountry.selectedIndex].value;
var reg = new RegExp(".*"+our_country+"\\|(.*?)#.*")
if(our_country&&reg.test(mytext)){
var city = mytext.replace(reg, "$1");
var cscity = document.filterform.cscity;
cscity.options[cscity.options.length] = new Option(city, our_country);
}}
</script>
<form name="filterform" action="http://">
 <div id="countries">страна1|город1#страна2|город2#страна3|город3#страна4|город4#страна5|город5#</div>
 <select name="cscountry" size="3">
 <option value="" selected="selected">Выберите страну</option>
 <option value="страна1" >страна1</option>
 <option value="страна2" >страна2</option>
 <option value="страна3" >страна3</option>
 <option value="страна4" >страна4</option>
 <option value="страна5" >страна5</option>
 </select>
 <select name="cscity" size="3">
 </select>
 <input type="button" name="test" value="Go"  onclick="magic()"/>
 </form>
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2011, 14:10
Интересующийся
Отправить личное сообщение для Zhiganov Посмотреть профиль Найти все сообщения от Zhiganov
 
Регистрация: 25.10.2010
Сообщений: 10

Вчера отключили интернет и не мог зайти.

Sweet, благодарю, сейчас почитаю.

рони, спасибо, но я не пробовал, сделал перебор в массиве через for, оказалось все просто.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
Поиск вхождения подстроки в массиве строк. FINoM Общие вопросы Javascript 8 27.02.2011 11:53
PagingToolbar и поиск DenQ ExtJS 5 02.11.2010 00:16
Поиск в двумерном массиве Vamp Общие вопросы Javascript 2 16.07.2009 13:05
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31