类别:js / 日期:2023-05-05 / 浏览:196 / 评论:0

随机生成一个长度为 10 的整数类型的数组,例如 [2, 10, 3, 4, 5, 11, 10, 11,20],将其排列成一个新数组,要求新数组形式如下,例如 [[2, 3, 4, 5], [10, 11],[20]]。

function formArray(arr: any[]) {
    const sortedArr = Array.from(new Set(arr)).sort((a, b) => a - b);
    const map = new Map();
    sortedArr.forEach((v) => {
        const key = Math.floor(v / 10);
        const group = map.get(key) || [];
        group.push(v);
        map.set(key, group);
    });
    return [...map.values()];
} // 求连续的版本
function formArray1(arr: any[]) {
    const sortedArr = Array.from(new Set(arr)).sort((a, b) => a - b);
    return sortedArr.reduce((acc, cur) => {
        const lastArr = acc.slice().pop() || [];
        const lastVal = lastArr.slice().pop();
        if (lastVal != null && cur - lastVal === 1) {
            lastArr.push(cur);
        } else {
            acc.push([cur]);
        }
        return acc;
    }, []);
}
function genNumArray(num: number, base = 100) {
    return Array.from({ length: num }, () => Math.floor(Math.random() * base));
}
const arr = genNumArray(10, 20);
//[2, 10, 3, 4, 5, 11, 10, 11, 20];
const res = formArray(arr);
console.log(`res${JSON.stringify(res)}`);

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。

«    2023年11月    »
12345
6789101112
13141516171819
20212223242526
27282930

最新留言