Javascript数组分组类别 [英] Javascript Array grouping category

查看:80
本文介绍了Javascript数组分组类别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在对数值数组进行分组时遇到问题:

I have a problem with grouping an array of numeric value:

我在这样的数组中有值

var numb = [5,10,11,6,7,18,1,8,2,1,15,12,4,5,3,4,6,7,15,20];

然后按升序排序

var sortedNumb = [1,1,2,3,4,4,5,5,6,6,7,7,8,10,11,12,15,15,18,20];

现在我想创建一组数字,例如

Now I want to create a group of numbers like

1-4,5-8,9-12,13-16,17-20

1-4 , 5-8 , 9-12 , 13-16 , 17-20

是否可以像这样动态创建组?

Is it possible to create groups dynamically, like that?

推荐答案

假设1-4、5-8、9-12、13-16、17-20分组意味着您需要5个分组,第一个分组( 1-4)包含[1,4]间隔内的所有数字;第二个(5-8)包含[5,8]间隔内的所有数字,依此类推.

Assuming that 1-4, 5-8, 9-12, 13-16, 17-20 grouping means that you want 5 groups, the first one (1-4) containing all the numbers within the [1, 4] interval; the second one (5-8) containing all the numbers within the [5, 8] interval, and so on.

// numbers and intervals must be in ascending order
var numb = [5,10,11,6,7,18,1,8,2,1,15,12,4,5,3,4,6,7,15,20];
// 1-4 , 5-8 , 9-12 , 13-16 , 17-20
var intervals = [4, 8, 12, 16, 20];

numb.sort(function (a, b) {
  return a - b;
});

var groups = [];
var j = 0;
for (var i = 0; i < intervals.length; i++) {
  var group = [];
  while (numb[j] <= intervals[i]) {
    group.push(numb[j]);
    j++;
  }
  groups.push(group);
}
console.log(groups);

输出:

[ [ 1, 1, 2, 3, 4, 4 ],
  [ 5, 5, 6, 6, 7, 7, 8 ],
  [ 10, 11, 12 ],
  [ 15, 15 ],
  [ 18, 20 ] ]

在阅读有关基于数组中最大数目计算间隔的注释之后.

After reading the comment about calculating the intervals based on the max number in the array.

var numb = [5,10,11,6,7,18,1,8,2,1,15,12,4,5,3,4,6,7,15,20];

numb.sort(function (a, b) {
  return a - b;
});

var max = numb[numb.length - 1];
// Five groups based on the max value of the array
var increment = max / 5;
var groups = [];
var j = 0;
for (var i = increment; i <= max; i += increment) {
  var group = [];
  while (numb[j] <= i) {
    group.push(numb[j]);
    j++;
  }
  groups.push(group);
}
console.log(groups);

输出:

[ [ 1, 1, 2, 3, 4, 4 ],
  [ 5, 5, 6, 6, 7, 7, 8 ],
  [ 10, 11, 12 ],
  [ 15, 15 ],
  [ 18, 20 ] ]

这篇关于Javascript数组分组类别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆