我有一个看起来像这样的JSON对象 -
0: {"": "1", company_name: ".", yearMonth: "1977-01-01", cumulative_raised: "0", rank: "1"}
1: {"": "2", company_name: ".comDominio", yearMonth: "1977-01-01", cumulative_raised: "0", rank: "2"}
2: {"": "3", company_name: ".FOX Networks", yearMonth: "1977-01-01", cumulative_raised: "0", rank: "3"}
3: {"": "4", company_name: "'Rock' Your Paper", yearMonth: "1977-01-01", cumulative_raised: "0", rank: "4"}
4: {"": "5", company_name: "( caravelo (", yearMonth: "1977-01-01", cumulative_raised: "0", rank: "5"}
5: {"": "6", company_name: "[24]7", yearMonth: "1977-01-01", cumulative_raised: "0", rank: "6"}
我想制作一个每年都有一个JSON对象,然后按照他们的等级排列公司列表,其中包含有关其名称和筹集资金的信息。它看起来像这样 -
{1977-01-01: {…}, 1977-02-01: {…}, 1977-03-01: {…}, 1977-04-01: {…}, 1977-05-01: {…}, …}
1977-01-01:
1: {name: ".FOX Networks", rank: "1", cumulative_raised: "20000"}
2: {name: "Blockcar", rank: "2", cumulative_raised: "10000"}
3: {name: "CHerry", rank: "3", cumulative_raised: "5000"}
4: {name: "TreesSimple", rank: "4", cumulative_raised: "2000"}
1977-02-01:
1: {name: "Blockcar", rank: "1", cumulative_raised: "30000"}
2: {name: "CHerry", rank: "2", cumulative_raised: "22000"}
3: {name: "Soundbus", rank: "3", cumulative_raised: "9000"}
4: {name: "Hopscotch", rank: "4", cumulative_raised: "5000"}
1977-03-01:
1: {name: "Honey", rank: "1", cumulative_raised: "30000"}
2: {name: "MangaRu", rank: "2", cumulative_raised: "22000"}
3: {name: "Hoss", rank: "3", cumulative_raised: "9000"}
4: {name: "Bread", rank: "4", cumulative_raised: "5000"}
这是我试图用它做的代码 -
d3.csv("amount-raised-month.csv", function(error, csvdata) {
if (error) throw error;
csvdata.forEach(function(d) {
companies[d.yearMonth] = {}
companies[d.yearMonth][d.rank] = {"rank": d.rank, "name": d.company_name, "raised": d.cumulative_raised}
}) })
问题是这段代码会覆盖,而不是附加它。我结束了每年的最后一个等级。
{1977-01-01: {…}, 1977-02-01: {…}, 1977-03-01: {…}, 1977-04-01: {…}, 1977-05-01: {…}, …}
1977-01-01:
4: {name: "TreesSimple", rank: "4", cumulative_raised: "2000"}
1977-02-01:
4: {name: "Hopscotch", rank: "4", cumulative_raised: "5000"}
1977-03-01:
4: {name: "Bread", rank: "4", cumulative_raised: "5000"}
如何每次附加新的JSON对象而不是覆盖?
您使用{}覆盖了以前的对象:
companies[d.yearMonth] = {}
试试这个:
companies[d.yearMonth] = companies[d.yearMonth] || {};
或使用if语句:
if (!companies[d.yearMonth]) companies[d.yearMonth] = {};
根据原始JSON中原始yearMonth属性的值创建一个Set。
迭代这个集合。在每次迭代时,过滤原始JSON,比较this yearMonth属性。过滤后的数组将包含yearMonth公司。我现在无法提供代码示例,但我希望你能得到这个想法。