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