Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Многомерный массив
 
 автор: ZetRider   (07.01.2014 в 11:44)   письмо автору
 
 

Добрый день,

столкнулся с проблемой при создании многомерного массива в javascript.

В PHP есть возможность создать массив вида:

        array(
            key_name1 => array(
                key1 : value1,
                key2 : value2
            ),
            key_name2 => array(
                key3 : value5,
                key4 : value6
            )
        )


все ключи и значения динамические.

Возможно ли создать подобный массив в javascript?

  Ответить  
 
 автор: confirm   (07.01.2014 в 12:48)   письмо автору
 
   для: ZetRider   (07.01.2014 в 11:44)
 

Нет в JS ассоциативных массивов ни многомерных ни маломерных, есть объекты. Но можно создать так называемые параллельные массивы (реляционные), в которых элементы с одинаковыми индексами содержат связанную информацию.

  Ответить  
 
 автор: ZetRider   (07.01.2014 в 13:37)   письмо автору
 
   для: confirm   (07.01.2014 в 12:48)
 

Спасибо, разобрался. Создал объект вида:

obj {
    1 : {
        k : v
        k : v
        k : v
    }
}


как оказалось, для передачи динамического названия свойства нужно заключить переменную в квадратные скобки []

  Ответить  
 
 автор: confirm   (07.01.2014 в 13:51)   письмо автору
 
   для: ZetRider   (07.01.2014 в 13:37)
 

Такого объекта быть не может, как и не может быть в РНР key : val, и не знаю что за динамические свойства и обязательность для них квадратных скобок.

  Ответить  
 
 автор: ZetRider   (07.01.2014 в 14:14)   письмо автору
 
   для: confirm   (07.01.2014 в 13:51)
 

хм.. странно тогда, что работает как хотелось бы. Возможно я допустил ошибку?
названия свойств является ID которое может быть всегда разным. По своему назвал это - динамическое название свойства.

пример кода:


my_data         = {};
my_data_field     = {};
    
$.fn.demoFN = function()
{
    $(this).each(function()
    {
        var parent_id     = $(this).data('parent');
        var this_id     = $(this).data('id');
        var this_val     = $(this).data('val');
        
        my_data[parent_id]         = {};
        my_data_field[this_id]     = this_val;
    });
    
    my_data[parent_id] = my_data_field;

    console.log(my_data);
    /*
    получаю:
        obj { 
            1 : { 
                k : v 
                k : v 
                k : v 
            } 
        }
    */
}
$('.field').demoFN();

  Ответить  
 
 автор: confirm   (07.01.2014 в 14:24)   письмо автору
 
   для: ZetRider   (07.01.2014 в 14:14)
 

Я имел ввиду, что сама запись должна быть:

obj = { 
  1 : { 
        a : v, 
        b : v, 
        c : v 
   } 
}


попробуй пойми что вы выставляете. И что вообще вы пытаетесь впихнуть в объект, элементы формы?

  Ответить  
 
 автор: ZetRider   (07.01.2014 в 14:32)   письмо автору
 
   для: confirm   (07.01.2014 в 14:24)
 

да, не верно написал вид объекта, спасибо, буду знать как верно его отображать.

Что и зачем:
Берем ID формы, их может быть несколько
У каждой формы есть поля, у поля есть ID и значение

Для дальнейшей работы со значениями полей решил поместить все в 1 объект разделяя их по номеру формы и id поля. Дабы в дальнейшем просто обращаться к нужному значению в объекте, а не таскать за собой лишний код для получения значений.

  Ответить  
 
 автор: confirm   (07.01.2014 в 14:45)   письмо автору
 
   для: ZetRider   (07.01.2014 в 14:32)
 

У каждой поля формы есть имя, а в jQuery есть два метода получения полей формы для последующего применения: .serialize() - преобразует форму в строку для URL, и .serializeArray() - преобразует форму в объект.

  Ответить  
 
 автор: ZetRider   (07.01.2014 в 15:02)   письмо автору
 
   для: confirm   (07.01.2014 в 14:45)
 

к сожалению serialize в моем случаи не подходит. Спасибо

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования