筛选值数组并将其分组

时间:2019-03-15 11:27:51

标签: javascript arrays filtering

所以我有一个数组,我需要对太相似的值进行排序并将它们放在另一个数组中。

例如

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]]

1 个答案:

答案 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);