我有一个数组,我需要对其进行排序并将过于相似的值放在另一个数组中。
例如
function group (arrData) {
for (let i = 0; i < array.length - 1; i++) {
if (
(array[i + 1] - array[i]
) < 5) {
return array[i];
}
}
}
const arr = [1,15,16,33,35,37,55,58]
const newArr = arr.map((item,index,array) => group(array));
但它只返回一个值。我该如何解决这个问题?
至于所需的输出:[[15,16],[33,35,36],[55,58]]
最佳答案
您可以对数组进行排序,如果不是按升序排列,然后通过检查实际值和前导值来减少该数组。
如果 dela 大于或等于 5
或者如果您得到了数组的第一个值,则将一个空数组压入结果集。
然后将值压入结果集中的最后一个数组。
var array = [1, 15, 16, 33, 35, 37, 55, 58],
result = array
.sort((a, b) => a - b) // not necessary with sorted data
.reduce((r, v, i, a) => {
if (!i || v - a[i - 1] >= 5) r.push([]);
r[r.length - 1].push(v);
return r;
}, []);
console.log(result);
关于javascript - 过滤值数组并将它们分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55181591/