[英]Javascript - reformatting a dictionary to an array of dictionaries
我在下面的字典中列出了人员列表和频率编号,我正在尝试将其格式化为
var frequency_list = [{"text":"Jay Sekulow","size":1},{"text":"Jeff Mason","size":1},.....]
上面是D3.js一张图表所需的格式:
原始清单:
{ 'Jay Sekulow': 1,
'Jeff Mason': 1,
'John Bolton': 2,
'John Dowd': 1,
'Jonathan Oatis': 3,
'Michael Cohen': 2,
'Michael Dreeben': 1,
'Mike Pence': 2,
'Patricia Zengerle': 1,
'Paul Manafort': 2,
'Rod Rosenstein': 1,
'Ronald Reagan': 1,
'Rudy Giuliani': 2,
'Sarah N. Lynch': 1,
'Sergei Skripal': 2, }
我该如何在javascript中解决这个问题?我尝试了以下代码,但格式错误:
var freq_list = [];
Object.keys(person).forEach(function(key) {
var str = "{ \"text\": \""+ key + "\", \"size\": \"" + person[key] +"\"}";
freq_list.push(str);
});
console.log(freq_list)
结果:
["{ \"text\": \"Jay Sekulow\", \"size\": \"1\"}","{ \"text\": \"Jeff Mason\", \"size\": \"1\"},......]
var data = { 'Jay Sekulow': 1, 'Jeff Mason': 1, 'John Bolton': 2, 'John Dowd': 1, 'Jonathan Oatis': 3, 'Michael Cohen': 2, 'Michael Dreeben': 1, 'Mike Pence': 2, 'Patricia Zengerle': 1, 'Paul Manafort': 2, 'Rod Rosenstein': 1, 'Ronald Reagan': 1, 'Rudy Giuliani': 2, 'Sarah N. Lynch': 1, 'Sergei Skripal': 2, }; var finalArray = Object.keys(data).map(val => { return { "text": val, "size": data[val] } }); console.log(finalArray);
您应该使用新的Object.entries
函数;或者,如果您使用的是旧版的javascript以支持旧版浏览器,请考虑使用Object.keys
const original = {
'Jay Sekulow': 1,
'Jeff Mason': 1,
'John Bolton': 2,
'John Dowd': 1,
'Jonathan Oatis': 3,
'Michael Cohen': 2,
'Michael Dreeben': 1,
'Mike Pence': 2,
'Patricia Zengerle': 1,
'Paul Manafort': 2,
'Rod Rosenstein': 1,
'Ronald Reagan': 1,
'Rudy Giuliani': 2,
'Sarah N. Lynch': 1,
'Sergei Skripal': 2
}
function formatInfo(info) {
return Object.entries(info).map(([text, size]) => ({text, size}))
}
const formatted = formatInfo(original)
运行以下代码段。 首先解析您的输入,然后reduce
将帮助您。 您也可以使用lodash的groupBy
方法
const frequency_list = '[{"text":"Jay Sekulow","size":1},{"text": "Jeff Mason","size":1}]'; const a = JSON.parse(frequency_list); const result = a.reduce((solution, item) => { solution[item.text]= item.size; return solution }, {}); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.