我如何匹配数字并创建二维数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何匹配数字并创建二维数组?相关的知识,希望对你有一定的参考价值。
我有一个像[1.2, 1.3, 1.4, 2.2, 2.3, 3.0, 4.3, 4.4, 4.5, 4.6, 4.7]
这样的数组
如何将其转换为基于十进制前的匹配数字的二维数组?
例如[[1.2, 1.3, 1.4], [2.2, 2.3], [3.0], [4.3, 4.4, 4.5, 4.6, 4.7]]
您可以使用Array.reduce
进行此操作,使用基于每个值的整数部分的索引来构建数组:
Array.reduce
因为它总是被排序的,所以您可以使用这种命令方法:
Object.values()
假设您要在它们之间使用空数组,可以像这样使用arr = [0.2, 1.3, 1.4, 2.2, 2.3, 3.0, 4.3, 4.4, 4.5, 6.6, 8.7];
res = arr.reduce((c, v) => {
i = Math.trunc(v);
c[i] = c[i] || [];
c[i].push(v);
return c;
}, []);
res = Object.values(res)
console.log(res);
:
const arr = [1.2, 1.3, 1.4, 2.2, 2.3, 3.0, 4.3, 4.4, 4.5, 4.6, 4.7];
let curr = -Infinity;
let currArr = null;
const res = [];
for (let n of arr) {
if (Math.trunc(n) > curr) {
res.push(currArr = [curr = n]);
} else {
currArr.push(n);
}
}
console.log(res);
结果:
reduce()
使用const numbers = [1.2, 1.3, 1.4, 2.2, 2.3, 3.0, 4.3, 4.4, 4.5, 4.6, 4.7];
const grouped = numbers.reduce(
(result, number) => {
result[Math.trunc(number)].push(number);
return result;
},
Array(Math.trunc(Math.max(...numbers)) + 1).fill().map(() => [])
);
,然后使用[
[],
[1.2,1.3,1.4],
[2.2,2.3],
[3],
[4.3,4.4,4.5,4.6,4.7]
]
遍历并根据sort
值进行分组。
forEach
以上是关于我如何匹配数字并创建二维数组?的主要内容,如果未能解决你的问题,请参考以下文章