daily pastebin goal
19%
SHARE
TWEET

Untitled

a guest May 16th, 2018 94 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.        * 数组根据数组对象中的某个属性值进行分组的方法
  3.        * 使用例子:this.arrayGroupByAttr(array,'num') 表示根据num属性进行分组,分组后的数据结构是:[{num: array[0].num, data: [array[0],array[1]……]},……]
  4.        * @param arr 需要分组的数组
  5.        * @param attr 分组的属性
  6.        * @returns {Array}
  7.        */
  8.       exports.arrayGroupByAttr = function(arr,attr) {
  9.         let attrArray = []; // 分组的值的种类
  10.         let result = [];
  11.         for (let i = 0; i < arr.length; i++) {
  12.             let item = arr[i];
  13.             if(attrArray.indexOf(item[attr])===-1) {
  14.                 let obj = {};
  15.                 obj[attr] = item[attr];
  16.                 obj['data'] = [item];
  17.                 result.push(obj);
  18.                 attrArray.push(item[attr]);
  19.             } else {
  20.                 for(let j = 0; j < result.length; j++){
  21.                   let _attr = result[j];
  22.                   if (_attr[attr] === item[attr]) {
  23.                     _attr.data.push(item);
  24.                     break;
  25.                   }
  26.                 }
  27.             }
  28.         }
  29.         return result;
  30.       };
  31.      
  32.       /**
  33.        * 数组根据数组对象中的某个属性值进行排序的方法
  34.        * 使用例子:newArray.sort(sortBy('number',false)) 表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
  35.        * @param attr 排序的属性 如number属性
  36.        * @param rev true表示升序排列,false降序排序
  37.        */
  38.       exports.arraySortBy = function(attr,rev){
  39.         //第二个参数没有传递 默认升序排列
  40.         rev = ((rev === undefined) || rev) ? 1 : -1;
  41.         return function(a,b){
  42.           a = a[attr];
  43.           b = b[attr];
  44.           if(a < b){
  45.             return rev * -1;
  46.           }
  47.           if(a > b){
  48.             return rev;
  49.           }
  50.           return 0;
  51.         }
  52.       }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top