30 lines
759 B
JavaScript
30 lines
759 B
JavaScript
// Utilitaire pour merger les résultats de plusieurs agrégateurs
|
|
function normalizeTitle(str) {
|
|
return str ? str.toLowerCase().replace(/[^a-z0-9]/g, '') : '';
|
|
}
|
|
|
|
function normalizeTitle(str) {
|
|
return str ? str.toLowerCase().replace(/[^a-z0-9]/g, '') : '';
|
|
}
|
|
function mergeResults(arrays) {
|
|
const map = {};
|
|
arrays.flat().forEach(entry => {
|
|
// Note: only title, fallback if no year
|
|
const key = normalizeTitle(entry.title) + (entry.year ? '|' + entry.year : '');
|
|
if (!map[key]) {
|
|
map[key] = {
|
|
title: entry.title,
|
|
year: entry.year,
|
|
results: []
|
|
};
|
|
}
|
|
map[key].results.push({
|
|
source: entry.source,
|
|
...entry
|
|
});
|
|
});
|
|
return Object.values(map);
|
|
}
|
|
|
|
module.exports = { mergeResults };
|