Добавление элементов в массив javascript - PullRequest
0 голосов
/ 06 сентября 2010

Я пытаюсь назначить элементы в массив при действии пользователя, поэтому, например, пользователь нажимает «Добавить», это добавит выбранный идентификатор в соответствующий раздел массива.

Массиввначале не будет создан, поэтому я настроил пустой массив:

var Options={};

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

Например, когда пользователь нажимает плюс на записи, в раскрывающемся списке выбирается вариант 2. Идентификатор выбранной записи: 5.

Я хотел бы структурировать свой массив следующим образом: -

[ключ, например, параметр раскрывающегося списка] => 'records' => array [record_id]

Каждый раз, когда пользователь нажимает плюс затемк записи идентификатор добавляется к правильному массиву на основе выпадающего выбранного параметра.

[option 1] => 'publication_date' = 12/09/2010, 'records' => [1, 2, 4]
[option 2] => 'publication_date' = 15/09/2010, 'records => [1, 3, 5]

и т. д., каждый параметр в поле выбора имеет дату публикации и серию записей, которые пользователь может назначитьк этому.

Ответы [ 2 ]

1 голос
/ 06 сентября 2010

Вы можете сделать что-то вроде этого:

function AddItem(key, value)  {
   if(Options[key]) Options[key].push(value);
   else Options[key] = [value];
}

Например, сделав это:

​AddItem(2, 5);
AddItem(2, 6);

В результате Options будет:

{ 2: [5, 6] }

Вы можете попробовать / сыграть с ним здесь .

0 голосов
/ 06 сентября 2010

Объект в javascript хорош для хранения набора данных из одного ключа, а не различных ключей.

т.е.: var records = {'12/09/2010':[1, 2, 4], '15/09/2010':[1, 3, 5]}

Чтобы получить записи за 15/09: records['15/09/2010']Добавьте новую запись для даты: records['15/09/2010'].push(6)

Если дата меняется, вам нужно сделать что-то вроде:records['17/09/2010'] = records['15/09/2010']; delete records['15/09/2010']

Пользователь не может изменить оба одновременно (дата и добавление), и вы должны выполнить оба действия обновления по отдельности.


Теперь, если вы планируете иметьбольше ключей, вы должны использовать массив объектов:

var records = [
  {publication_date:'12/09/2010', records:[1, 2, 4], ..., otherProp='...'},
  ...
];

И для каждого изменения цикл в массиве, найти соответствующий элемент и изменить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...