Допустим, у меня есть 2 массива возможных числовых значений:
var reg = [1000, 1010, 2050];
var ag = [100, 101, 102];
Я хочу создать объект / JSON вида:
[ 1000 : [100, 101], 1010 : [100, 101, 102], 2050 : [100, 102]];
Эти значения будут получены из флажков, которые пользователь установил бы:
<input type="checkbox" data-reg="1000" data-ag="100" class="agcheck" />
<input type="checkbox" data-reg="1000" data-ag="101" class="agcheck" />
...
<input type="checkbox" data-reg="xxx" data-ag="yyy" class="agcheck" />
xxx и yyy будут всеми возможными значениями из массива
и
var obj = {}; //or var arr = [];
$('.agcheck:checked').each(function(){
var ag = parseInt($(this).data('ag'));
var reg = parseInt($(this).data('reg'));
//what i need here
}
Как я могу создать такой объект в JavaScript?
В цикле
- Я не могу сделать obj.reg.push (ag), потому что у меня будет "Не могу прочитать"
свойство 'push' из неопределенного "
- Я не могу сделать obj.push (reg: ag), потому что у меня будет массив типа
[0:[reg:100], 1:[reg:101]...]
, ключ (здесь reg
) не будет установлен как таковой
- Я не хочу
obj.push({'reg':reg,'ag':ag})
, потому что я хочу, чтобы ключ был значением reg.
====
Благодаря ответу #SLaks мне удалось сделать все правильно:
var obj = {}; //or var arr = [];
$('.agcheck:checked').each(function(){
var ag = parseInt($(this).data('ag'));
var reg = parseInt($(this).data('reg'));
if (obj[reg] == undefined) {
obj[reg] = [];
}
obj[reg].push(ag);
}