javascript - 过滤值数组并将它们分组

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

最佳答案

您可以对数组进行排序,如果不是按升序排列,然后通过检查实际值和前导值来减少该数组。

如果 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/

相关文章:

javascript - Bootstrapper.bindDOMParsed( function ) 和 Bootstrapper.bindDOMLoaded( function ) 有什么区别?

java - 关闭窗口后将数据保留在窗口中。Netbeans

java - 为什么数组的长度没有更新,导致索引越界错误?

jquery - 使用 ajax 时使用带有 tablesorter 的外部过滤器

基于 if else 语句的 iOS Realm 多重过滤器

java - Spring Boot 安全性 - 两个不同的过滤器

javascript - d3复杂数据,更新现有节点

javascript - 我的 JQuery 图像幻灯片似乎不起作用

javascript - 订阅消息时 PubsubJs 和 *this* 未定义

javascript - 转换 JavaScript 对象