我想创建一个方法,该方法接受数字列表并可以按提供的方差减少数组。
方差解释:
方差应与低于和高于的值相匹配。例如,方差 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/