哪个javascript函数将返回数组中低于阈值的值的数目



我有一个processAverage函数,它通过对连接设备发送的两个值求平均值来返回值Z。如果此值Z低于阈值(this.limitZ),则会在服务器上触发警报。

然而,在我看来,警报发送得太快了,我想用一个函数来减缓它的速度,该函数只有在processAverage的最后10个等式中返回的值低于阈值limitZ 5次时才发送警报。

这就是我到目前为止的想法。首先,我将processAverage的最后10个结果保存在一个滑动数组中:

const delimiter = 'n'
const eValues = []
const elmt = []
this.limitZ = 45
const z = this.processAverage(e1, e3)
const i = 0;
do
{i += 1
elmt.push (z)
}
while (i < 10)

现在,我必须编写一个函数,返回数组中所有低于阈值this.limitZ.的值

例如

var filtered = items.filter(function(item) {
return item < this.limitZ;
});
console.log(filtered);
count(filtered) {
const =filtered;
return 
}

然后我需要一个函数,当这个函数过滤的长度超过5项时,它会发出警报。它可能看起来像:

if (filtered.length > 5) {
this.emit('alert', msg)

然而,我不确定如何正确地编写它并使这些函数协同工作,因为我不知道JS,我尝试运行的所有东西都告诉我变量有问题,但我也相信,一旦数组中的5个值低于阈值,就有更简单的方法触发警报,对吧?

提前感谢

您的"滑动阵列";没有完全正确地实现,因为一旦数组中有10个第一个z值的副本,它就会停止向数组推送

这是一个正确的实现。出于演示目的,我将Z替换为一个随机整数,for循环只是显示它填充并只保留最后10个数字。事实上,您不会使用循环,而是在每次获得新的Z值时推送到数组。(例如,这可以使用每N毫秒触发一次的间隔来完成)。

function randomNumber(){ return Math.floor(Math.random() * 10);}
var arr = [];
let capacity = 10;
for(let i = 0; i < 15; i++)
{
let z = randomNumber();
if(arr.length == capacity)
arr.splice(0, 1);
arr.push(z);
}
console.log(arr);

第二部分是获取arr中小于阈值的元素的数量。我将使用5作为阈值。不要让lambda函数吓到你。它与function(e){return e < threshold}基本相同

let threshold = 5;
let filtered = arr.filter(e => e <= threshold);
//filtered.length contains the number of elements below the threshold

function randomNumber(){ return Math.floor(Math.random() * 10);}
var arr = [];
let capacity = 10;
for(let i = 0; i < 15; i++)
{
let z = randomNumber();
if(arr.length == capacity)
arr.splice(0, 1);
arr.push(z);
}
console.log(arr);
let threshold = 5;
let filtered = arr.filter(e => e <= threshold);
console.log(filtered);
console.log(filtered.length);

最后,当值的数量大于5时,可以使用filtered.length来发射。您可以运行此代码段几次,直到您看到它在值大于5时发出,而在值小于等于5时不发出。

if(filtered.length > 5)
this.emit(...);

function randomNumber(){ return Math.floor(Math.random() * 10);}
var arr = [];
let capacity = 10;
for(let i = 0; i < 15; i++)
{
let z = randomNumber();
if(arr.length == capacity)
arr.splice(0, 1);
arr.push(z);
}
console.log(arr);
let threshold = 5;
let filtered = arr.filter(e => e <= threshold);
console.log(filtered);
console.log(filtered.length);
if(filtered.length > 5)
console.log("EMIT");

最新更新