用于循环嵌套迭代的Javascript

用于循环嵌套迭代的Javascript,javascript,arrays,loops,Javascript,Arrays,Loops,我试图遍历一个大的值数组,并为每秒钟收集一个值的平均值。我无法使这段代码正常工作,就我所知,问题在于嵌套的while循环。我是否犯了一个范围错误,阻止我迭代for循环索引 数据是以毫秒为单位的时间戳和辐射计数。 a.data[i][0]是时间戳,a.data[i][26]是计数 for (i = 0; i < a.data.length; i++){ // counts is the count of radiation over the last timeframe va

我试图遍历一个大的值数组,并为每秒钟收集一个值的平均值。我无法使这段代码正常工作,就我所知,问题在于嵌套的while循环。我是否犯了一个范围错误,阻止我迭代for循环索引

数据是以毫秒为单位的时间戳和辐射计数。
a.data[i][0]
是时间戳,
a.data[i][26]
是计数

for (i = 0; i < a.data.length; i++){
    // counts is the count of radiation over the last timeframe
    var counts = 0;
    // t1 is the start time 
    // t2 is the current iteration time
    var t1, t2 = a.data[i][0];
    while ((t2 - t1) < 1000){
        t2 = a.data[i][0];
        counts += a.data[i][26];
        i++;
    }
    // Geiger Data is an array of { x:(time), y:(value)} datapoints.
    GeigerData.push({x: (t1/1000), y: counts});
}
for(i=0;i
您的问题源于以下几行:

 var t1, t2 = a.data[i][0];
定义JS变量不是这样工作的,在代码中,
t1
总是未定义的。你真正想要的是

 var t1 = a.data[i][0];
 var t2 = t1;

谢谢,这解决了问题。这也可以做到
var t1=t2=a.data[i][0]
@JonathanCrowe-从技术上讲,是的,你可以做到,但你绝对不想做到。您的代码与此相同:
var t1=a.data[i][0]
t2=t1这通过不使用var将t2置于全局范围内。请看这个提琴:非常有趣!谢谢你的演示