Javascript 如何在列表中添加词典?

Javascript 如何在列表中添加词典?,javascript,dictionary,for-loop,Javascript,Dictionary,For Loop,我试图创建一个for循环,将值存储在一个字典中,每次迭代都会将这个字典附加到一个列表中 已尝试使用push()和索引列表附加,但未成功 json = { "MUNICIPIOS":[ {"ATRIBUTOS":["atrib1","atrib2","atrib3"],"VALORES": [10, 100, 1000]}, {"ATRIBUTOS":["atrib1","atrib2","atrib3"],"VALORES": [20, 200, 2000

我试图创建一个for循环,将值存储在一个字典中,每次迭代都会将这个字典附加到一个列表中

已尝试使用push()和索引列表附加,但未成功

json = {
    "MUNICIPIOS":[
        {"ATRIBUTOS":["atrib1","atrib2","atrib3"],"VALORES": [10, 100, 1000]},
        {"ATRIBUTOS":["atrib1","atrib2","atrib3"],"VALORES": [20, 200, 2000]},
        {"ATRIBUTOS":["atrib1","atrib2","atrib3"],"VALORES": [30, 300, 3000]},
        {"ATRIBUTOS":["atrib1","atrib2","atrib3"],"VALORES": [40, 400, 4000]}
    ]
};

var atributos = json["MUNICIPIOS"][0]["ATRIBUTOS"];
var municipios = json["MUNICIPIOS"];
var dimensoes = [];
var dicionario = {label:"", values:[]};


for (var atr = 0; atr < atributos.length; atr++){

    dicionario.label = atributos[atr];

    valores = [];
    for (var mun=0; mun < municipios.length; mun++){
        valores.push(municipios[mun]["VALORES"][atr]);
        dicionario.values = valores;
    }

    //dimensoes.push(dicionario);
    dimensoes[atr] = dicionario;
}

console.log(dimensoes);
我需要这个:

// Expected result
[
  { label: 'atrib1', values: [ 10, 20, 30, 40 ] },
  { label: 'atrib2', values: [ 100, 200, 300, 400 ] },
  { label: 'atrib3', values: [ 1000, 2000, 3000, 4000 ] }
]

我做错了什么?

您的代码的问题是您在哪里“填充”
DICIONIO
-这一个对象被用于所有输出
维度[atr]

var dicionario = {label:"", values:[]};

for (var atr = 0; atr < atributos.length; atr++){

    dicionario.label = atributos[atr];
    // snip - rest of your code
    dimensoes[atr] = dicionario;
}
但是,对于整洁的ES6+解决方案:

const json={
“市政当局”:[
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[101001000]},
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[202002000]},
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[30,300,3000]},
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[404004000]}
]
};
const atributos=json.MUNICIPIOS[0].atributos;
const municipios=json.municipios;
const dimensoes=atributos.map((标签,atr)=>({
标签,
值:municipio.map(municipio=>municipio.VALORES[atr])
}));

log(JSON.stringify(dimensoes,null,4))代码的问题在于“填充”
DICIONIO
-这一个对象用于所有输出
dimensoes[atr]

var dicionario = {label:"", values:[]};

for (var atr = 0; atr < atributos.length; atr++){

    dicionario.label = atributos[atr];
    // snip - rest of your code
    dimensoes[atr] = dicionario;
}
但是,对于整洁的ES6+解决方案:

const json={
“市政当局”:[
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[101001000]},
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[202002000]},
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[30,300,3000]},
{“ATRIBUTOS”:[“atrib1”、“atrib2”、“atrib3”],“VALORES”:[404004000]}
]
};
const atributos=json.MUNICIPIOS[0].atributos;
const municipios=json.municipios;
const dimensoes=atributos.map((标签,atr)=>({
标签,
值:municipio.map(municipio=>municipio.VALORES[atr])
}));

log(JSON.stringify(dimensoes,null,4))
put
diciario={label:,值:[]}
作为for loopput
diciario={label:,value:[]}内的第一行作为for循环内的第一行
var dicionario = {label:"", values:[]};

for (var atr = 0; atr < atributos.length; atr++){

    dicionario = {label:atributos[atr], values:[]};

    //dicionario.label = atributos[atr]; not required as it is set above
    // snip - rest of your code

    dimensoes[atr] = dicionario;
}