题目:随机生成一个长度为10的整数类型的数组,例如[2, 10, 3, 4, 5, 11, 10, 11,20], 将其排列成一个新数组,
要求新数组,形式如下: [[2, 3, 4, 5], [10, 11], [20], [30, 31, 32]];
//封装随机数
function random(start, end) {
return Math.floor(Math.random() * (end - start + 1) + start);
}
// 专门用来存十个随机的整数的
var arr = [];
// 随机十个整数放入arr中
while (arr.length < 10) arr.push(random(1, 100));
// 处理数组,从小到大排序
arr.sort(function (a, b) {
return a - b;
});
// 用来存放最后结果的
var newArr = [];
var obj = {};
//例如随机的10个数为 arr = [2, 10, 3, 4, 5, 11, 10, 11,20]
for (var i = 0; i < arr.length; i++) {
// temp其实就是key
var temp = Math.floor(arr[i] / 10);
if (!obj[temp]) {
// 没有的话新建一个key,并且等于一个空数组
obj[temp] = [];
// 将当前的元素,放进去
obj[temp].push(arr[i]);
} else {
// 如果存在key, 则可以直接放入
obj[temp].push(arr[i]);
}
}
// 将对象转化为数组格式
for (var k in obj) {
newArr.push(obj[k]);
}
网友评论