Newer
Older
xc-business-system / src / commonMethods / useGroup.ts
/**
 * 将数组中具有相同属性值的元素分组
 * @param arr 数组
 * @param prop 属性
 * @returns
 */
export function useGroup(arr: any, prop: string): any {
  var groups = {} as any // 创建空对象作为存储结果的容器
  let result = [] as any

  for (var i = 0; i < arr.length; i++) {
    var key = arr[i][prop] // 获取当前元素的指定属性值

    if (!groups[key]) {
      groups[key] = [] // 如果该属性值不存在于结果中,则新建一个空数组
    }

    groups[key].push(arr[i]) // 将当前元素添加到对应属性值所对应的数组中
  }
  Object.values(groups).forEach((item) => {
    result = result.concat(item)
  })
  return result // 返回包含了按属性值分组后的数组的数组
}