Поиск и сравнение в массиве
Здравствуйте. Код прокомментирован и надеюсь понятно, что я хочу сделать. Проблема с поиском и сравнением в массиве.
И еще подскажите наиболее простой и компактный метод удаления повторяющихся значений из массива. 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,
А может без массива? 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')]) |
Рони, совсем не понял как этим пользоваться применительно к моему случаю, ничего не выводит.
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)]); } |
Цитата:
|
Цитата:
<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&®.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> |
Вчера отключили интернет и не мог зайти.
Sweet, благодарю, сейчас почитаю. рони, спасибо, но я не пробовал, сделал перебор в массиве через for, оказалось все просто. |
Часовой пояс GMT +3, время: 15:34. |