所以我有一个数组,我需要对太相似的值进行排序并将它们放在另一个数组中。
例如
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]]
答案 0 :(得分:4)
如果不按升序排列,则可以对数组进行排序,然后通过检查实际值和前任数组来缩小该数组。
如果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);