Javascript.RU

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

перевод списка в многомерный массив
Есть такой вот массив на PHP
Array
(
    [Pervaya] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 34
                    [name] =>qqq
                )

            [1] => stdClass Object
                (
                    [id] => 45
                    [name] => www
                )
        )

    [Vtoraya] => Array
        (


            [0] => stdClass Object
                (
                    [id] => 56
                    [name] => eee
                )

            [1] => stdClass Object
                (
                    [id] => 78
                    [name] => rr
                )
)

я его успешно получаю и генерирую такие вот списки
<ul id="Pervaya" >
<li user-id="34"><input type="checkbox"> qqqq</li>
<li user-id="45"><input type="checkbox"> wwww</li>
</ul>
<ul id="Vtoraya" >
<li user-id="56"><input type="checkbox"> eee</li>
<li user-id="78"><input type="checkbox"> rr</li>
</ul>

с этим проблем нет тут все получается в процессе работы пользователь может изменить эти списки, скажем добавить какие то элементы или изменить их местами вообщем эти списки меняются, потом после изменения пользователь должен мочь сохранить эти уже измененные списки вот тут и не получается у меня ни как сделать многомерные ассоциативные массивы в яваскрипте
Написал следующие но groups[groupName] пишется не массив а пустой элемент
var groups = new Array();
		$("ul").each(function(index, element){
			var groupName = $(element).attr("id");
			groups[groupName] = new Array();
			rules = new Object();
			$(element).children().each(function(i, li){
				var arrLi = new Array();
				arrLi["id"] = $(this).attr("user-id");
				arrLi["name"] = $(this).text();				
				groups[groupName].push(arrLi);	
			});	
					
		});

А да забыл указать что использую jQuery

Последний раз редактировалось Telnet, 04.01.2013 в 15:43. Причина: ошибка в коде
Ответить с цитированием
  #2 (permalink)  
Старый 04.01.2013, 15:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Telnet,
для начала $("#ul") нет у вас такого id, есть элемент $("ul")
Ответить с цитированием
  #3 (permalink)  
Старый 04.01.2013, 15:44
Профессор
Отправить личное сообщение для Telnet Посмотреть профиль Найти все сообщения от Telnet
 
Регистрация: 21.02.2011
Сообщений: 160

рони я там просто сокрашал , что б проше было разобраться у меня там итерации как по спискам так и по элементам Li работали

Последний раз редактировалось Telnet, 04.01.2013 в 15:48.
Ответить с цитированием
  #4 (permalink)  
Старый 04.01.2013, 15:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Telnet,
ваш код практически рабочий с учётом моего замечания - только массивы нигде не используются, замените их на {}
Возможный вариант ...
var groups = {};
		$("ul").each(function(index, element){
			var groupName = $(element).attr("id");
            groups[groupName] = [];
			rules = new Object();
			$(element).children().each(function(i, li){
				var arrLi = {};
				arrLi["id"] = $(this).attr("user-id");
				arrLi["name"] = $(this).text();
				groups[groupName].push(arrLi);
			});

		});
Ответить с цитированием
  #5 (permalink)  
Старый 04.01.2013, 16:04
Профессор
Отправить личное сообщение для Telnet Посмотреть профиль Найти все сообщения от Telnet
 
Регистрация: 21.02.2011
Сообщений: 160

var groups = {};
		$("#groupRight ul").each(function(index, element){
			var groupName = $(element).attr("id");
			groups[groupName] = {};
			$(element).children().each(function(i, li){
				var arrLi = {};
				arrLi.id = $(this).attr("user-id");
				arrLi.name = $(this).text();					
				groups[groupName] = (arrLi);	
			});	
					
		});

Вот что то типа того только groups[groupName] теперь содержит только последний элемент, а мне нужно что б это был массив всех элементов
Ответить с цитированием
  #6 (permalink)  
Старый 04.01.2013, 16:06
Профессор
Отправить личное сообщение для Telnet Посмотреть профиль Найти все сообщения от Telnet
 
Регистрация: 21.02.2011
Сообщений: 160

var groups = {};
		$("#groupRight ul").each(function(index, element){
			var groupName = $(element).attr("id");
			groups[groupName] = [];
			$(element).children().each(function(i, li){
				var arrLi = {};
				arrLi.id = $(this).attr("user-id");
				arrLi.name = $(this).text();	
				
				groups[groupName].push(arrLi);	
			});	
				
		});

Вот то что нужно
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многомерный массив stp008 Общие вопросы Javascript 6 28.10.2012 15:03
Многомерный массив javascript simple Общие вопросы Javascript 20 03.11.2010 02:11
ajax и многомерный массив cat9 AJAX и COMET 1 03.10.2010 15:25
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Многомерный массив в json Л_Денис Общие вопросы Javascript 1 21.04.2010 21:43