JS 根据某个字段进行排序或分组;JS 将数组分为 n 个一组

JS 数组中根据某个字段进行排序

const arr = [
  { name: "崔喻琪", age: 32 },
  { name: " 王忱景", age: 18 },
  { name: " 房真睿", age: 27 },
  { name: "姬泉孝", age: 20 },
  { name: "余嘉芳", age: 16 },
  { name: "孙平卉", age: 23 },
];
console.log(this.abilitySort(arr, "age", true));

/** 根据传入的字段进行排序
 * @param arr 需要排序的数组
 * @param property 排序的字段
 * @param desc true.升序 false.降序
 * @returns {*} 排好序后的数组
 */
abilitySort(arr, property, desc) {
  return arr.sort(function (a, b) {
    const val1 = a[property];
    const val2 = b[property];
    if (desc) {
      return val1 - val2; // 升序排列
    } else {
      return val2 - val1; // 降序排列
    }
  });
},

JS 数组中根据某个字段进行分组

const arr = [
  { id: "1001", name: "崔喻琪", age: 32 },
  { id: "1001", name: " 王忱景", age: 18 },
  { id: "1001", name: " 房真睿", age: 27 },
  { id: "1002", name: "姬泉孝", age: 20 },
  { id: "1002", name: "余嘉芳", age: 16 },
  { id: "1003", name: "孙平卉", age: 23 },
];
console.log(this.abilitySort(arr, "id"));

/** 根据传入的字段进行分组
 * @param arr 需要分组的数组
 * @param property 分组的字段
 * @returns {*[]} 已分好组的数组
 */
abilitySort(arr, property) {
  let map = {};
  for (let i = 0; i < arr.length; i++) {
    const ai = arr[i];
    if (!map[ai[property]]) map[ai[property]] = [ai];
    else map[ai[property]].push(ai);
  }
  let res = [];
  Object.keys(map).forEach((key) => {
    res.push({ [property]: key, data: map[key] });
  });
  return res;
},

JS 将数组分为 n 个一组

const list = [
  { id: 1, name: '宰父谷枫' },
  { id: 2, name: '买孟' },
  { id: 3, name: '疏学林' },
  { id: 4, name: '次如风' },
  { id: 5, name: '巧紫雪' }
];
console.log(this.datumGroup(list, 3));

/** 将数组分为 n 个一组
 * @param data 需要操作的数组数据
 * @param n 多少个为一组(默认4个为一组)
 * @returns {*[]} 已分好组的数组
 */
datumGroup(data, n = 4) {
  let newArr = [];
  for (let i = 0, j = data.length; i < j; i += n) {
    newArr.push(data.slice(i, i + n));
  }
  return newArr;
},

猜你喜欢

转载自blog.csdn.net/AdminGuan/article/details/127997961
今日推荐