let arr = [{id: '1a'},{id: '2d'},{id: '3asd'},{id: '1a'},{id: '2d'},{id: '2d'},{id: '12s'}]
function unquire(arr , key) {
let concatArr = []
arr.sort((a, b) => {
var x = a[key].toLowerCase();
var y = b[key].toLowerCase();
if (x < y) return -1
if (x > y) return 1;
return 0;
}); //排序
for (let i = 0; i < arr.length; i++) {
if (arr[0][key] === arr[arr.length - 1][key]) { //如果第一项等于最后一项 , 代表整个数组都相同
concatArr.push(arr)
break;
} else if (arr[0][key] !== arr[i][key]) { //获取与第一项不同的元素的下标
concatArr.push(arr.splice(0, i)) //将数组截取
concatArr.push(...unquire(arr,key)) //截取后的数组进行递归 , 由于上一步用的为push , 所以返回的为复杂数组[[]] , 所以需要使用展开运算符进行扁平化
break;
}
}
return concatArr
}
unquire(arr,'id')