Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пробежаться по массиву, В духе foreach() PHP 
:(
    Опции темы
InfMag
Дата 23.1.2008, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Здравствуйте, я делаю отправку на email и делаю форму нескольких вложений, как на яндексе, справа от каждого вложения + и - добавить поле вложения и убрать текущее. Ну это не сама суть.

При добавлении поля нужно пробегаться по массиву и выводить результат, я не могу понять, какая функция работает в JavaScript как функция foreach() в PHP

Ну может знаете что-то в этом духе:
Код

<?php
$arr = array('index' => 'value', '2index2' => '22value22', '3InDeX33' = > 'val22ue');
foreach ($arr as $ind => $val)
{
     echo 'Array -> '.$ind.' is '.$val.'<br>';
}
?>

Результат будет таким:
Код

Array -> index is value
Array -> 2index2 is 22value22
Array -> 3InDeX33 is val22ue

Через обычный цикл for(var i=0;i<sizeof(arr);i++) не вариант, ибо индексы полей могут смещаться из-за динамического удаления и добавления
PM   Вверх
solenko
Дата 23.1.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67





--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
InfMag
Дата 23.1.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



solenko, хм, спасибо smile никогда не замечал, что у мозиллы есть свой девелопермент...
PM   Вверх
ksnk
Дата 23.1.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



Еcли не используется prototype, то nj-же самый for, правда в другом виде 
Код

var a=['Hello,', 'world!'], s='';
for(i in a){s+=i+':'+a[i]+' '};
alert(s);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
InfMag
Дата 23.1.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



solenko, что-то я не понял как строится цикл... Как мне прочитать из массива его указательно имя index не сам индекс, а например есть массив arr[togo] и как прочитать togo ?? Что-то я не могу вникнуть в суть...

Добавлено через 2 минуты и 34 секунды
ksnk, постой, какую структуру имеет массив a ?? a['hello'] = 'world'; ?? Или ты просто обявил и хелло и ворлд пустыми??
PM   Вверх
InfMag
Дата 23.1.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Я попытался объявить массив
Код

var arr = array('hello'=>'world','buuee'=>'jest');
Firebug ругается и код не работает. Разве я неправильно оъявляю массив?
PM   Вверх
solenko
Дата 23.1.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



Не правильно. В JS вообще нет асоциативных массивов -- http://andrewdupont.net/2006/05/18/javascr...idered-harmful/
Для таких целей нужно использовать хеши, которые буду являться объектами.
Пример все с той же мозиллы:
Код

var sum = 0;
var obj = {prop1: 5, prop2: 13, prop3: 8};
for each (var item in obj) {
  sum += item;
}
print(sum); // prints "26", which is 5+13+8



--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
InfMag
Дата 24.1.2008, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



solenko, спасибо за ссылку! +1
Понял в чем суть:
Код

var associative_array = new Array();
associative_array["one"] = "Lorem";
associative_array["two"] = "Ipsum";
associative_array["three"] = "dolor";
for (i in associative_array) { alert(i+' '+associative_array[i]); };

Где первое - индекс, второе - значение smile
PM   Вверх
solenko
Дата 24.1.2008, 19:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



InfMag, кажется не совсем поняли.
Код

var associative_array = new Array();
associative_array["one"] = "Lorem";
associative_array["two"] = "Ipsum";
associative_array["three"] = "dolor";

После этого вы получаете объект, состоящий из пустого массива и свойств one, two, three. После такого:
associative_array.length == 0
ну и, соответственно, ни один из методов массива не будет работать.
Имхо, правильней прсто 
Код

var  associative_array = {
  one: "Lorem",
  two: "Ipsum",
  three: "dolor"
}


Это сообщение отредактировал(а) solenko - 24.1.2008, 19:43


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
InfMag
Дата 25.1.2008, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



solenko, хм, можешь показать на примере моего скрипта? Что тут поменять?
Код

var associative_array = new Array();
associative_array["one"] = "Lorem";
associative_array["two"] = "Ipsum";
associative_array["three"] = "dolor";
for (i in associative_array) { alert(i+' '+associative_array[i]); };

PM   Вверх
solenko
Дата 25.1.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 9
Всего: 67



InfMag, у вас все работоспособно, но ваш код, в принципе, идентичен этому
Код

var associative_array = new String();
associative_array["one"] = "Lorem";
associative_array["two"] = "Ipsum";
associative_array["three"] = "dolor";
for (i in associative_array) { alert(i+' '+associative_array[i]); };

В JS ['индекс'] это не обращение к элементу массива, а обращение к свойству объекта, т.е. associative_array["one"] = "Lorem"; равносильно associative_array.one = "Lorem";
Потому то я и говорю, что создавать массив просто нет смысла. Выше я записывал объект в JSON нотации, что равносильно
Код

var associative_array = new Object();
//или просто var associative_array;
associative_array["one"] = "Lorem";
associative_array["two"] = "Ipsum";
associative_array["three"] = "dolor";
for (i in associative_array) { alert(i+' '+associative_array[i]); };




--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.