JS: создать JSON с динамическими ключами и значениями - PullRequest
0 голосов
/ 20 мая 2019

Допустим, у меня есть 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);
 }

1 Ответ

0 голосов
/ 20 мая 2019

Чтобы установить свойство объекта, используйте скобки:

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