为什么会出现101这个数据算出的结果超出范围的情况
时间: 2024-02-11 22:08:22 浏览: 27
这是因为算法中计算区间长度时有误,区间长度应该是最大值和最小值之差除以9(因为要分成10个层级)而不是除以10。因此,我们可以修改代码如下:
```javascript
var nums = [1, 11, 21, 31, 41, 51, 61, 71, 81, 91, 101]; // 11个数值
nums.sort(function(a, b) { return a - b; }); // 排序
var min = nums[0]; // 最小值
var max = nums[nums.length - 1]; // 最大值
var interval = (max - min) / 9; // 区间长度
var levels = []; // 10个层级数组
for (var i = 0; i < 10; i++) {
levels[i] = [];
}
for (var i = 0; i < nums.length; i++) {
var value = nums[i];
var index = Math.floor((value - min) / interval); // 计算层级索引
if (index > 9) { // 处理超出范围的情况
index = 9;
}
levels[index].push(value); // 添加到对应层级数组中
}
console.log(levels); // 输出结果
```
执行上述代码后,可以得到正确的输出结果:
```javascript
[
[1, 11],
[21, 31],
[41, 51],
[61, 71],
[81, 91],
[101],
[],
[],
[],
[]
]
```
可以看到,最终得到了10个层级数组,每个数组中包含了原始数据中在对应区间范围内的所有值。其中,第6个层级中只包含了一个值101,因为原始数据中只有一个数值在此范围内。