如何匹配数字并创建二维数组?

Joe*_*ran 3 javascript arrays multidimensional-array

我有一个像这样的数组 [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]]

Nic*_*ick 6

您可以使用Array.reduce基于每个值的整数部分的索引来构建数组:

arr = [1.2, 1.3, 1.4, 2.2, 2.3, 3.0, 4.3, 4.4, 4.5, 4.6, 4.7];

let res = arr.reduce((c, v) => {
  i = Math.trunc(v) - 1;
  c[i] = c[i] || [];
  c[i].push(v);
  return c;
}, []);

console.log(res);
Run Code Online (Sandbox Code Playgroud)

如果您的值可以从 0 开始,或者值中有间隙,则可以使用类似的代码段,然后使用它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);
Run Code Online (Sandbox Code Playgroud)