有三层数组怎么根据某一值合并对象,求指点

let arry = [{
            name: '张三', age: 18,
            list: [{ num: 21, list1: [{ money: 1, money2: '', money3: 4 }] },
              { num: 21, list1: [{ money: 2, money2: '5', money3: '' }] },
              { num: 21, list1: [{ money: 2, money2: '', money3: '2' }] }]
          }, {
            name: '里斯',
            age: 19,
            list: [{ num: 22, list1: [{ money: 1, money2: '', money3: '' }] },
              { num: 22, list1: [{ money: 3, money2: '8', money3: 10 }] }
            ]
          },
            {
              name: '11',
              age: 21,
              list: [{ num: 22, list1: [{ money: 1, money2: '', money3: '' }] },
                { num: 22, list1: [{ money: 3, money2: '8', money3: 10 }] },
                { num: 22, list1: [{ money: 1, money2: '8', money3: 10 }] }
              ]
            }
          ]

如果数组list1内 money相等 就合并对象
要求结果如下:

[
   {
    "name":"张三",
     "age":18,
      "list":[{"num":21,
                  "list1":[{"money":1,"money2":"","money3":4}]},
                {"num":21,
                   "list1":[{"money":2,"money2":"","money3":"2"}]}]},
  {
    "name":"里斯",
    "age":19,
    "list":[{"num":22,
              "list1":[{"money":1,"money2":"","money3":""}]},
            {"num":22,
              "list1":[{"money":3,"money2":"8","money3":10}]}]},
{
"name":"小名",
"age":21,
"list":[
         {"num":22,
            "list1":[{"money":3,"money2":"8","money3":10}]},
         {"num":22,
             "list1":[{"money":1,"money2":"8","money3":10}]}]
}]

https://blog.csdn.net/u010214074/article/details/78854778