Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * 数组根据数组对象中的某个属性值进行分组的方法
- * 使用例子:this.arrayGroupByAttr(array,'num') 表示根据num属性进行分组,分组后的数据结构是:[{num: array[0].num, data: [array[0],array[1]……]},……]
- * @param arr 需要分组的数组
- * @param attr 分组的属性
- * @returns {Array}
- */
- exports.arrayGroupByAttr = function(arr,attr) {
- let attrArray = []; // 分组的值的种类
- let result = [];
- for (let i = 0; i < arr.length; i++) {
- let item = arr[i];
- if(attrArray.indexOf(item[attr])===-1) {
- let obj = {};
- obj[attr] = item[attr];
- obj['data'] = [item];
- result.push(obj);
- attrArray.push(item[attr]);
- } else {
- for(let j = 0; j < result.length; j++){
- let _attr = result[j];
- if (_attr[attr] === item[attr]) {
- _attr.data.push(item);
- break;
- }
- }
- }
- }
- return result;
- };
- /**
- * 数组根据数组对象中的某个属性值进行排序的方法
- * 使用例子:newArray.sort(sortBy('number',false)) 表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
- * @param attr 排序的属性 如number属性
- * @param rev true表示升序排列,false降序排序
- */
- exports.arraySortBy = function(attr,rev){
- //第二个参数没有传递 默认升序排列
- rev = ((rev === undefined) || rev) ? 1 : -1;
- return function(a,b){
- a = a[attr];
- b = b[attr];
- if(a < b){
- return rev * -1;
- }
- if(a > b){
- return rev;
- }
- return 0;
- }
- }
Add Comment
Please, Sign In to add comment