Я использую Node.js для программирования. В приведенном ниже массиве объектов A и B есть массивы с некоторыми значениями дубликатов, но мы должны пропустить дублированныетолько на основе func_id массивов.В массиве C мы имеем push A и B func_score значения, основанные на func_id и func_score_A из A (func_score) массив и func_score_B из B (func_score) массив.
Пример кода:
var A = [{
"func_id": 1,
"func_score": 0.4
}, {
"func_id": 2,
"func_score": 0.5
}, {
"func_id": 3,
"func_score": 0.7
}];
var B = [{
"func_id": 3,
"func_score": 0.9
}, {
"func_id": 4,
"func_score": 0.7
}, {
"func_id": 5,
"func_score": 0.8
}];
var C = [];
var tmpArray = [];
A.forEach(function(element) {
B.forEach(function(loop) {
if (element.func_id === loop.func_id) {
var tmpObje = {
func_id: element.func_id,
func_sore_A: element.func_score,
func_sore_B: loop.func_score
}
tmpArray.push(tmpObje);
C.push(tmpObje);
return;
}
});
});
A.forEach(function(element) {
tmpArray.forEach(function(loop) {
if (element.func_id !== loop.func_id) {
var smsObj = {
func_id: element.func_id,
func_sore_A: element.func_score,
func_sore_B: 0
}
C.push(smsObj);
return;
}
});
});
B.forEach(function(element) {
tmpArray.forEach(function(loop) {
if (element.func_id !== loop.func_id) {
var domineObj = {
func_id: element.func_id,
func_sore_A: 0,
func_sore_B: loop.func_score
}
C.push(domineObj);
return;
}
});
});
console.log(C);
Ожидаемый результат
[
{"func_id": 1,
"func_score_A": 0.4,
"func_score_B":0
},
{"func_id": 2,
"func_score_A": 0.5,
"func_score_B":0
},
{"func_id": 3,
"func_score_A": 0.7,
"func_score_B":0.9
},
{"func_id": 4,
"func_score_A": 0,
"func_score_B":0.7
},
{"func_id": 5,
"func_score_A": 0,
"func_score_B":0.8
}
]
Примечание: