javascript - 如何减少具有相似值的数字数组

标签 javascript arrays

我想创建一个方法,该方法接受数字列表并可以按提供的方差减少数组。

方差解释:

方差应与低于和高于的值相匹配。例如,方差 100 等于值:5460 应匹配 5410 - 5510 之间的任何值。(低于等于值 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())大于或等于的数字方差/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)

关于javascript - 如何减少具有相似值的数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197643/

相关文章:

javascript - Gulp glob 忽略文件类型而不复制空文件夹

javascript - 在 d3 条形图中设置自定义 x 轴标签?

java - 如何在 Java 中创建指针数组?下面以c代码为例,对于我的项目JAVA是必修的,所以你能帮我吗?

javascript - 如何在 React 路由器上使用 Laravel 路由

javascript - Jsplumb 分离连接

arrays - 在 Swift 中修改字典数组

C++动态数组大小调整问题

java - 数组错误期望.class

java - 测试线程数组

javascript - 如何正确处理 REST API 的路由