Open madfour opened 3 years ago
例如:[2, 10, 3, 4, 5, 11, 10, 11, 20]是随机生成的数组,规定形式是[[2, 3, 4, 5], [10, 11], [20]]。
[2, 10, 3, 4, 5, 11, 10, 11, 20]
[[2, 3, 4, 5], [10, 11], [20]]
/* 生成随机整数数组 * length 数组长度 * max 取值最大范围 */ function randomArray(length = 10, max = 20) { return Array.from({ length }, () => ~~(Math.random() * max)) } // 区间分組 (把0-9,10-19这样的区间组成一个数组) function newArray(array) { return array .reduce((acc, c) => { let i = ~~(c / 10) if (!acc[i]) acc[i] = [] acc[i].push(c) return acc }, []) .filter(c => !!c) .map(arr => Array.from(new Set(arr)).sort()) } // 把连续的元素组成一个数组 function continueArray(array) { return Array.from(new Set(array)) .sort((a, b) => a - b) .reduce( (acc, c, i, arr) => { if (i === 0) acc[0].push(c) else { if (arr[i - 1] !== c - 1) acc.push([]) acc[acc.length - 1].push(c) } return acc }, [ [] ] ) } let arr = randomArray(10, 30) // 生成的数组例如:[5, 15, 14, 20, 17, 18, 25, 21] newArray(arr) // [[5], [14, 15, 17, 18], [20, 21, 25]] continueArray(arr) // [[5], [14, 15], [17, 18], [20, 21], [25]]
例如:
[2, 10, 3, 4, 5, 11, 10, 11, 20]
是随机生成的数组,规定形式是[[2, 3, 4, 5], [10, 11], [20]]
。