微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我正在处理与日期相关的数据(代码在此代码段之后解析日期),但由于数据中的某些不一致,我想为不同的日期分配一个值。因此,如果日期是完整的,则将其分配为“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])
          }
      }




      

      };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。