类别: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)}`);
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。
发表评论 / 取消回复