javascript - 如何减少具有相似值的数字数组
问题描述
我想创建一个采用数字列表并可以通过提供的方差来减少数组的方法。
差异解释:
方差应匹配低于和高于的值。例如,100 的方差等于值:5460 应该匹配 5410 - 5510 之间的任何值。(50 低于等值值,50 高于 50)
例如,如果我有数组:
[ 1576420754, 1576420756, 1576593554, 1581172759, 1581172764 ]
我想创建一个方法filterSimilarValues(array, variance = 100)
这会给我以下输出:
[ 1576420756, 1576593554, 1581172764 ]
我尝试了几件事,比如
const filterSimalarValues = (array, variance = 100) => {
let filteredArray = [];
for (let i = 0; i < array.length; i++) {
const number = array[i];
if (number >= number - (variance / 2) && number <= number + (variance / 2)) {
return;
}
filteredArray.push(number);
}
return filteredArray;
};
解决方案
用于Array.filter()
仅保留Math.abs()
它们与下一个数字之间的绝对差 () 大于或等于的数字variance / 2
。i === array.length - 1
默认情况下包括最后一项 ( )。
const filterSimalarValues = (array, variance = 100) =>
array.filter((n, i) =>
i === array.length - 1 ||
Math.abs(n - array[i + 1]) >= variance / 2
)
const data = [1576420754, 1576420756, 1576593554, 1581172759, 1581172764]
const result = filterSimalarValues(data)
console.log(result)
推荐阅读
- kubernetes - HashiCorp Vault 填充 kubernetes 机密
- javascript - 将变量插入 JavaScript String.Match 正则表达式
- c++ - 将字符缓冲区转换为函数指针
- c# - 文件助手只返回一行数据
- regex - 如何在 kotlin 正则表达式中使用反向引用?
- https - HTTPS 请求会过期吗?
- javascript - mapbox 表达式字符串生成
- mysql - SQL 语句向客户显示 2018 年第一次购买的产品系列,他们在之前几年从未购买过
- c# - c# - 发布后 wpf sqlite 崩溃
- hadoop - 监控和验证 long distcp 操作