问题描述
我正在处理与日期相关的数据(代码在此代码段之后解析日期),但由于数据中的某些不一致,我想为不同的日期分配一个值。因此,如果日期是完整的,则将其分配为“0”,然后分配另外两个级别“1”和“2”。因此,首先我将三个新列插入到具有默认值的数组中,该值有效。但后来我想使用 indexOf 搜索带有“00”的日期。 '=== 5' 是因为它正在搜索完整日期 'YYYY-00-DD' 等的子字符串。我希望代码循环遍历数组并找到这些实例,以及何时将相关数值分配给不确定性(someData[i]["uncertainty"] = 0;)。我一直在绕圈子试图让它正确,所以非常感谢任何帮助。
d3.csv('minimal.csv',function(error,someData) {
if (error) throw error;
console.log(someData);
// 1. add properties 'vstart' and 'vend' for inferred dates
// and uncertainty property
for (let i = 0; i < someData.length; i++) {
someData[i]["vstart"] = null;
someData[i]["vend"] = null;
someData[i]["uncertainty"] = 0;
};
/* 2. add 'uncertainty' levels:
0: no uncertainty,e.g. 1898-01-23
1: uncertainty in days,e.g. 1914-07-00
2: uncertainty in months e.g. 1906-00-00
*/
var uncertainty = someData.uncertainty;
for (let i = 0; i < someData.length; i++) {
if (someData.indexOf("00") === 5 ) { someData.uncertainty[i] = someData.uncertainty[i].replace(/0/i,2); }
else if (someData.indexOf("00") === 8 ) { someData.uncertainty[i] = someData.uncertainty[i].replace(/0/i,1); }
else if (someData.indexOf("00") === -1 ) { someData.uncertainty[i] = someData.uncertainty[i].replace(/0/i,0); }
};
解决方法
为您创建了演示。请检查一下。
您正在尝试访问数组 someData 并应用 indexOf() 方法。但是这种方法适用于数组元素。因此,您必须通过 someData[i] 访问数组元素,然后应用 indexOf() 方法。
episodes <- doctor_who(season = c(27:38),episode = c(1:13))
for (let i = 0; i < someData.length; i++) {
const regex = /[0-9]+-([0-9]+)-([0-9]+)/gm;
let m;
while ((match = regex.exec(someData[i]["start"])) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (match.index === regex.lastIndex) {
regex.lastIndex++;
}
// month
if (match[1] === "00") {
someData[i]["uncertainty"] = someData[i]["uncertainty"].replace(/0/i,'1');
console.log('month',match[0])
}
else if (match[2] === "00") {
someData[i]["uncertainty"] = someData[i]["uncertainty"].replace(/0/i,'2');
console.log('day',match[0])
}
}
};