我希望能够对原始类型的无序数组进行分区,如下所示:
var array = [102,103,104,201,203,204,303,301,302,405,406,408,101];
=>
newArray = [[101,102,103,104],[201,203,204],[303,301,302],[405,406,408]]
根据第一个整数将数组划分为多个段.
该数组将基于类似于此表达式的内容进行分区:
array[i]/100|0 === j;
其中j可以是1,2,3或4.
例如. 405/100 | 0 === 4 //从4开始划分为数组.
有人知道我可以根据第一个数字将此数组有效地过滤为部分的方法吗?
我知道我可以将lodash分区函数与集合一起使用,但是我需要将inital数组仅用作原始类型以提高速度.即使那样,分区也只会将数组分成两部分.
提前致谢!
解决方法:
您可以使用lodash函数链接,例如
var array = [404,101,102,103,104,201,203,204,303,301,302,405,406,408];
var newArray = _(array)
.groupBy(function (x) { return x / 100 | 0; })
.values()
.value();