1. 把数组[102, 104, 207, 213, 313, 414, 515, 516] 变成
{'2': [102] ,4: [104], 7: [207],13: [213, 313],14: [414],15: [515],16: [516]\}的格式
const groupBy = function (obj, iterator) {
var result = {};
for (var i = 0; i < obj.length; i++) {
var value = obj[i];
var index = i;
var key = iterator(value, index);
(result[key] || (result[key] = [])).push(value);
}
return result;
};
调用方式
let arr = [102, 104, 207, 213, 313, 414, 515, 516];
let ng = groupBy(arr, function (n) { 这个方法不会改变原数组
let value = n % 100;
return value;
});
2. 把上面得到的数据做一个排序,按照数组长度排序
const sortByLen = function (obj) {
var arr = [];
for (var i in obj) {
arr.push(obj[i]);
}
// console.warn("=====arr:",arr)
arr.sort(function (left, right) {
var a = left.length, b = right.length;
return a - b;
})
// console.warn("===2222==arr:",arr)
return arr;
};
调用方式
let xxc2 = sortByLen(ng);
得到// =====xxc2: [ [ 411 ],
// [ 109, 209 ],
// [ 312, 312 ],
// [ 516, 516 ],
// [ 108, 108, 408 ],
// [ 310, 410, 410 ],
// [ 517, 517, 517 ],
2. 把上面得到的数据做一个排序,按照数值排序
const sortByVal = function (obj) {
var arr = obj.concat();
// console.warn("=====arr:",arr)
arr.sort(function (left, right) {
var a = left[0] % 100, b = right[0] % 100;
if (a == 1) a = 14;
if (b == 1) b = 14;
return a - b;
})
// console.warn("===2222==arr:",arr)
return arr;
};
调用方式
let xxc2 = sortByVal(ng);
得到//=====xxc2: [[102,102,102],[103,103,103],[105,105],[104,104]]