SOURCE

var arr = [
    {'a': '王五', 'b': 0}, 
    {'a': '王五', 'b': 99}, 
    {'a': '张三', 'b': 1}, 
    {'a': '张三', 'b': 2}, 
    {'a': '李四', 'b': 3}, 
    {'a': '李四', 'b': 4}, 
    {'a': '张六', 'b': 5}
]

for(var i = arr.length - 1; i > 0; i--) {
    let data = arr[i]
    if(!data.list || data.list.length == 0) {
        data.list = [{'b': data.b}]
    }
    let prev = i - 1
    arr[prev].list = arr[prev].list || []
    arr[prev].list.push({'b': arr[prev].b})
    
    if(data.a == arr[prev].a) {
        if(data.list && data.list.length > 0) {
            arr[prev].list = arr[prev].list.concat(data.list)
        }
        arr.splice(i, 1)
    }
}

console.log(arr)
console 命令行工具 X clear

                    
>
console