如何使用indexOf查找子字符串,然后如果它找到,则将值设置为数组的另一部分



我正在处理与日期相关的数据(代码解析此代码段之后的日期(,但由于数据中的一些不一致,我想为不同的日期分配一个值。因此,如果日期已完成,则会分配"0",然后分配另外两个级别"1"one_answers"2"。因此,首先我将三个新列插入到具有默认值的数组中,这是有效的。但是我想使用indexOf来搜索带有"00"的日期。"===5"是因为它正在搜索完整日期"YYYY-00-DD"的子字符串,依此类推。我希望代码在数组中循环,找到这些实例,并在循环时将相关数值分配给不确定性(someData[I][quot;不确定性"]=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((方法。


/* 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 someData = [];
someData[0] = "1898-01-23";
someData[1] = "1914-07-00";

for (let i = 0; i < someData.length; i++) {
if  (someData[i].indexOf("00") == 5 ) {
console.log("called 5");
}

else if (someData[i].indexOf("00") == 8 ) {                         console.log("called 8"); }
else if (someData[i].indexOf("00") == -1 ) {                       console.log("called -1"); }
};

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])
}
}



};

相关内容

最新更新