Guest User

Untitled

a guest
May 16th, 2018
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.88 KB | None | 0 0
  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. }
Add Comment
Please, Sign In to add comment