/**
* Removes duplicate datasets from an array.
*
* @param {Array<object>} datasets An array of datasets (objects).
* @param {string} key The key to use for checking duplicates. Defaults to 'id'.
* @returns {Array<object>} A new array with duplicates removed. Returns an empty array if input is invalid.
*/
function removeDuplicateDatasets(datasets, key = 'id') {
if (!Array.isArray(datasets)) {
console.error("Invalid input: datasets must be an array.");
return [];
}
if (datasets.length === 0) {
return []; // Return empty array if input is empty.
}
if (typeof key !== 'string' || key.trim() === '') {
console.error("Invalid input: key must be a non-empty string.");
return [];
}
const seen = new Set();
const result = [];
for (const dataset of datasets) {
if (typeof dataset !== 'object' || dataset === null) {
console.warn("Skipping invalid dataset:", dataset);
continue;
}
if (dataset.hasOwnProperty(key)) {
const keyValue = dataset[key];
if (!seen.has(keyValue)) {
seen.add(keyValue);
result.push(dataset);
}
} else {
console.warn(`Dataset missing key '${key}':`, dataset);
}
}
return result;
}
Add your comment