我将维基百科中显示世界历史上所有战争的一张表转换为一个csv文件,以根据这些数据构建散点图。
CSV格式:
War,Deathrange,Geometricmean(Note 1),Date,Combatants,Location,Notes
Conquests of Cyrus the Great,"100,000+","100,000",549 BC–530 BC,Persian Empire vs. various states,Middle East,"Number given is the sum of all deaths in battle recorded by writers during this time period, does not take into account civilian deaths, the actual number may be much greater."
Greco–Persian Wars,
我想在X轴上获取“日期”的第一个日期,例如“ 549”。点的半径应与战争的持续时间有关。
问题 我不知道如何解析d.3中的“ BC”日期
到目前为止,我做到了: 我的方法是使用Regex查找字符串中的数字。
let dataset = await d3.csv("../wars.csv");
let dateNumber = dataset[0].Date.match(/\d+/g);
要检查日期是否包含“ BC”并将其转换为“减”,我做了:
if (dataset[0].Date.includes("BC")) {
const warStart = "-" + dateNumber[0];
const warEnd = "-" + dateNumber[1];
console.log(warStart + " and ends " + warEnd)
}
我不知道如何在所有日期都采用这种方法–不仅是[0] 。
我尝试过
const dates = d => d.Date.match(/\d+/g);
console.log(dates);
控制台正在记录:
function dates()
但是没有日期,即使是像“ dates [1]”这样的索引
那我该如何解析CSV中包含“ BC”的日期的格式,该格式可以使d3时间功能在x轴上显示它们?
因为我是JS和d3的新手,所以感谢有用的资源。
最好,谢谢。