Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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_Arrays_Filter - Fatal编程技术网

Javascript 带变量的动态数组过滤函数

Javascript 带变量的动态数组过滤函数,javascript,arrays,filter,Javascript,Arrays,Filter,我是一个JS noob,一直被困在动态过滤器问题上。我有一个正在后台构建的对象数组。每个对象都有几个“字段”,其中一个是“时间” 我希望能够过滤数组以保持所有对象 obj.field.time>t-dt/2和obj.field.time什么?无效语法,您可能指的是=>t和dt来自何处?每个元素的t和dt是否不同?他们如何改变?如果它们只是作用域中的变量,并且不受当前检查项的影响,则您只需使用它们。@Berto99 yep抱歉,这是一个打字错误(已修改)@Crashstr在某些上下文之上添加了关于

我是一个JS noob,一直被困在动态过滤器问题上。我有一个正在后台构建的对象数组。每个对象都有几个“字段”,其中一个是“时间

我希望能够过滤数组以保持所有对象
obj.field.time>t-dt/2
obj.field.time

从其他论坛上,我知道如何对常量执行此操作(请参阅下面我的代码的简化摘录)

与:


==>
什么?无效语法,您可能指的是
=>
t和dt来自何处?每个元素的
t
dt
是否不同?他们如何改变?如果它们只是作用域中的变量,并且不受当前检查项的影响,则您只需使用它们。@Berto99 yep抱歉,这是一个打字错误(已修改)@Crashstr在某些上下文之上添加了关于它们如何更改的内容。理论上,它们不受VDU平面数据的影响,但上面的代码似乎不起作用
filtered_array = array.filter(obj => obj.field.time >= t - dt/2 && obj.field.time <= t + dt/2)
t = 0;
dt = 0.2;
play = false; // a button on the interface can toggle the play boolean

setInterval(playTime, dt * 1000);

function playTime() {
    if (play) {
        t = t + dt;
        filtered_array = vdData_flat.filter(obj => obj.fields.time >= t - dt / 2 && obj.fields.time <= t + dt / 2)

        console.log('extract: ', filtered_array);
    }
}
ticksSocket.onmessage = function (event) {
    data = JSON.parse(event.data);
    [...other stuff...]
    vdData.push(data);
    vdData_flat = flatten(vdData);
}
    // Function for flattening vdData
function flatten(arr) {
    return arr.reduce(function (flat, toFlatten) {
        return flat.concat(Array.isArray(toFlatten) ? flatten(toFlatten) : toFlatten);
    }, []);
}