Assuming I have the following:
var array =
[
    {"numberUnique1":"123456789", "numberUnique2":null, "name":null, "date":"1959-08-10", "kinship":null}
],
[
    {"numberUnique1":"987654123", "numberUnique2":"15935478", "name":"Joe", "date":null, "kinship":null}
],
[
    {"numberUnique1":"123456789", "numberUnique2":"258369147", "name":null, "date":"1959-08-10", "kinship":null}
],
[
    {"numberUnique1":null, "numberUnique2":"15935478", "name":null, "date":"1976-09-14", "kinship":"dad"}
],
[
    {"numberUnique1":"123456789", "numberUnique2":null, "name":"Bill", "date":"1959-08-10", "kinship":"son"}
]
What is the best way to be able to get an new array:
var new_array =
[
    {"numberUnique1":"123456789", "numberUnique2":258369147, "name":"Bill", "date":"1959-08-10", "kinship":"son"}
],
[
    {"numberUnique1":"987654123", "numberUnique2":"15935478", "name":"Joe", "date":"1976-09-14", "kinship":"dad"}
]
It was solved like this (I don't know if there is a better way):
new_array = [];
if (array.length > 0) {
    new_array.push(array[0]);
    let aux = 1;
    let qtd = 0;
    m:for (var i = 1; i < array.length; i++) {
        for (var ii = 0; ii < aux; ii++) {
            if ( (new_array[ii].numberUnique1 != array[i].numberUnique1) && (!!new_array[ii].numberUnique1) && (!!array[i].numberUnique1) ) {
                for (var iii = 0; iii < new_array.length; iii++) {
                    if (new_array[iii].numberUnique1 == array[i].numberUnique1) {
                        qtd = qtd + 1;
                    }
                }
                if (qtd == 0) {    
                    new_array.push(array[i]);
                    if ( (new_array.length < array.length) ) {
                        aux = aux + 1;
                        continue m;
                    }
                }
            } else if ( (new_array[ii].numberUnique1 == array[i].numberUnique1) && (!!new_array[ii].numberUnique1) && (!!array[i].numberUnique1) ) {
                if ( (!new_array[ii].numberUnique2) &&  (!!array[i].numberUnique2) ) {
                    new_array[ii].numberUnique2 = array[i].numberUnique2;
                }
                if ( (!new_array[ii].name) &&  (!!array[i].name) ) {
                    new_array[ii].name = array[i].name;
                }
                if ( (!new_array[ii].date) &&  (!!array[i].date) ) {
                    new_array[ii].date = array[i].date;
                }
                if ( (!new_array[ii].kinship) &&  (!!array[i].kinship) ) {
                    new_array[ii].kinship = array[i].kinship;
                }
            } else {
                if ( (new_array[ii].numberUnique2 != array[i].numberUnique2) && (!!new_array[ii].numberUnique2) && (!!array[i].numberUnique2) ) {
                    for (var iii = 0; iii < new_array.length; iii++) {
                        if (new_array[iii].numberUnique2 == array[i].numberUnique2) {
                            qtd = qtd + 1;
                        }
                    }
                    if (qtd == 0) {    
                        new_array.push(array[i]);
                        if ( (new_array.length < array.length) ) {
                            aux = aux + 1;
                            continue m;
                        }
                    }
                } else if ( (new_array[ii].numberUnique2 == array[i].numberUnique2) && (!!new_array[ii].numberUnique2) && (!!array[i].numberUnique2) ) {
                    if ( (!new_array[ii].numberUnique1) &&  (!!array[i].numberUnique1) ) {
                        new_array[ii].numberUnique1 = array[i].numberUnique1;
                    }
                    if ( (!new_array[ii].name) &&  (!!array[i].name) ) {
                        new_array[ii].name = array[i].name;
                    }
                    if ( (!new_array[ii].date) &&  (!!array[i].date) ) {
                        new_array[ii].date = array[i].date;
                    }
                    if ( (!new_array[ii].kinship) &&  (!!array[i].kinship) ) {
                        new_array[ii].kinship = array[i].kinship;
                    }
                } else {
                    if ( (new_array[ii].name != array[i].name) && (!!new_array[ii].name) && (!!array[i].name) ) {
                        for (var iii = 0; iii < new_array.length; iii++) {
                            if (new_array[iii].name == array[i].name) {
                                qtd = qtd + 1;
                            }
                        }
                        if (qtd == 0) {    
                            new_array.push(array[i]);
                            if ( (new_array.length < array.length) ) {
                                aux = aux + 1;
                                continue m;
                            }
                        }
                    } else if ( (new_array[ii].name == array[i].name) && (!!new_array[ii].name) && (!!array[i].name) ) {
                        if ( (new_array[ii].date == array[i].date) && (!!new_array[ii].date) && (!!array[i].date) ) {
                            if ( (new_array[ii].kinship == array[i].kinship) && (!!new_array[ii].kinship) && (!!array[i].kinship) ) {
                                if ( (!new_array[ii].numberUnique1) &&  (!!array[i].numberUnique1) ) {
                                    new_array[ii].numberUnique1 = array[i].numberUnique1;
                                }
                                if ( (!new_array[ii].numberUnique2) &&  (!!array[i].numberUnique2) ) {
                                    new_array[ii].numberUnique2 = array[i].numberUnique2;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}