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;
}
}
}
}
}
}
}
}
}