Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组值';未定义';在分割字符串之后?_Javascript_String - Fatal编程技术网

Javascript 数组值';未定义';在分割字符串之后?

Javascript 数组值';未定义';在分割字符串之后?,javascript,string,Javascript,String,我正在使用冒号拆分格式为“0:00:00”的函数。一旦我完成了这项工作,我将通过将数字保存到一个单独的变量来使用单独的数字进行一些计算。在.split函数之后,我试图访问的值给出了“undefined”,我不确定原因 我尝试过使用replace而不是split,但是split是一种更简单的方法,它使用更少的代码来完成我想要的事情(能够将值分离) 这是我的控制台在进入时间vie输入框时显示的内容: 我认为这个错误是因为在输入整个时间后,每个按键都会更新时间 calcPace(time, dista

我正在使用冒号拆分格式为“0:00:00”的函数。一旦我完成了这项工作,我将通过将数字保存到一个单独的变量来使用单独的数字进行一些计算。在.split函数之后,我试图访问的值给出了“undefined”,我不确定原因

我尝试过使用replace而不是split,但是split是一种更简单的方法,它使用更少的代码来完成我想要的事情(能够将值分离)

这是我的控制台在进入时间vie输入框时显示的内容: 我认为这个错误是因为在输入整个时间后,每个按键都会更新时间

calcPace(time, distance){
  var minutes = 0;
  var seconds = 0



  var hms = time+'';   // your input string
  var intDist = distance+'';
  intDist = parseFloat(distance, 10);
  var a = hms.split(':'); // split it at the colons

  // minutes are worth 60 seconds. Hours are worth 60 minutes.
  var totalMinutes = ((+a[0]) * 60) + ((+a[1])) + (+a[2] / 60);

  console.log(a[0]); //gives 'undefined, should be a number 0-6

  var paceValue = totalMinutes / intDist;
  minutes = Math.floor(paceValue);
  seconds = Math.round((paceValue - minutes) * 60);

  console.log(totalMinutes)
  if(seconds < 10) {
        seconds = "0" + seconds;
    }

  var paceValue = minutes+":"+seconds;

  this.setState({
     pace: paceValue//paceValue
  });
}

打印paceValue时,结果为NaN:NaN,以及分和秒。在拆分后检入数组位置时,值未定义。我需要那里有数字,并且预期的输出类似于“5:24”或类似的内容。

由于这些行,可能会发生此错误

var a = hms.split(':')
...
var totalMinutes = ((+a[0]) * 60) + ((+a[1])) + (+a[2] / 60);
...
minutes = Math.floor(paceValue);
seconds = Math.round((paceValue - minutes) * 60);
如果
hms.split(“:”)
不返回长度为3的数组<代码>一个[x]可以是
未定义的

如果将
undefined
除以一个数字,它将返回
NaN

因此,您得到未定义的
的原因可能是
hms
不是带3的字符串

e、 g.(
'0:00:00'


我建议您进行一些检查并有条件地创建
totalMinutes
,具体取决于
a

调用函数的具体方式?@Pointy查看最新的编辑OK好的
this.time()
在该
handleButtonPress()
函数中是什么?
var a = hms.split(':')
...
var totalMinutes = ((+a[0]) * 60) + ((+a[1])) + (+a[2] / 60);
...
minutes = Math.floor(paceValue);
seconds = Math.round((paceValue - minutes) * 60);