JS:使用动态键和值创建json

时间:2019-05-20 15:15:32

标签: javascript arrays json object

假设我有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),因为我会遇到“无法阅读 未定义的属性“推””
  • 我无法执行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 :(得分:-1)

要设置对象的属性,请使用方括号表示法:

obj[name] = value;