哪个 javascript 函数会 return 数组中低于阈值的值的数量
Which javascript function would return the number of values under a threshold in an array
我有一个 processAverage 函数,该函数 returns 通过对从已连接设备发送的两个值进行平均来得到一个值 Z。如果此值 Z 低于阈值 (this.limitZ),则会在服务器上触发警报。
但是,我认为警报发送得太快了,我想用一个函数来减慢它的速度,该函数仅当返回的值在最后 10 个方程中低于阈值 limitZ 5 次时才发送警报processAverage.
这是我到目前为止想出的。首先,我将 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)
现在,我必须编写一个函数 returns 数组中所有低于阈值 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 个值低于阈值时触发警报,对吗?
提前致谢
您的“滑动数组”没有完全正确地实现,因为一旦其中包含第一个 z 值的 10 个副本,它就会停止推送到数组。
这是一个正确的实现。为了演示目的,我已经用一个随机整数替换了你的 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);
然后最后你可以使用 filtered.length
在值的数量大于 5 时发出。你可以 运行 这个片段几次直到你看到它在值大于 5 时都发出小于 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");
我有一个 processAverage 函数,该函数 returns 通过对从已连接设备发送的两个值进行平均来得到一个值 Z。如果此值 Z 低于阈值 (this.limitZ),则会在服务器上触发警报。
但是,我认为警报发送得太快了,我想用一个函数来减慢它的速度,该函数仅当返回的值在最后 10 个方程中低于阈值 limitZ 5 次时才发送警报processAverage.
这是我到目前为止想出的。首先,我将 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)
现在,我必须编写一个函数 returns 数组中所有低于阈值 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 个值低于阈值时触发警报,对吗?
提前致谢
您的“滑动数组”没有完全正确地实现,因为一旦其中包含第一个 z 值的 10 个副本,它就会停止推送到数组。
这是一个正确的实现。为了演示目的,我已经用一个随机整数替换了你的 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);
然后最后你可以使用 filtered.length
在值的数量大于 5 时发出。你可以 运行 这个片段几次直到你看到它在值大于 5 时都发出小于 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");