jquery 动态创建对象不起作用

jquery create object dynamic not working

我需要输出为

{       'US-CA': '#084365',
        'US-TX': '#084365',
        'US-CO': '#00a2e8',
        'US-NM': '#00a2e8',
        'US-WY': '#00a2e8',
        'US-NE': '#00a2e8'
    }

为此,我使用了以下代码:

   var output = [];

$('.vectordata').find('.varc').each(function(i){
            var t = $(this);
            regioncode = t.find('.regioncode').val();
            color = t.find('.color').val();
                    var obj2 = {}
                    obj2[regioncode] = color;
                    output.push(obj2);

    }

但是我收到的输出是

请帮我解决动态对象创建问题

       var output = {};

    $('.vectordata').find('.varc').each(function(i){
                var t = $(this);
                regioncode = t.find('.regioncode').val();
                color = t.find('.color').val();
                        output[regioncode] = color;

        }

console.log(output);

您正在将 objects 推入 Array。将 output 作为对象。

你不需要数组只是把它放在对象中

 var output = {};

$('.vectordata').find('.varc').each(function(i){
            var t = $(this);
            regioncode = t.find('.regioncode').val();
            color = t.find('.color').val();
            output[regioncode] = color;
                   

    }

您希望将输出作为 JSON 对象,如下所示:

{       'US-CA': '#084365',
        'US-TX': '#084365',
        'US-CO': '#00a2e8',
        'US-NM': '#00a2e8',
        'US-WY': '#00a2e8',
        'US-NE': '#00a2e8'
}

因此,为了达到您的目的,您需要声明一个对象并将值作为 {key:value} 对放入对象中。不需要任何数组来再次存储对象。您可以按照 samuellawrentz 的回答。