/**
* Filters data in lists for isolated environments, using default values.
*
* @param {Array<Array<any>>} data - The data to filter. Each inner array represents a list.
* @param {object} defaults - An object containing default values for each field.
* @returns {Array<Array<any>>} - The filtered data with default values applied.
*/
function filterForIsolatedEnvironments(data, defaults) {
if (!Array.isArray(data)) {
return []; // Handle invalid input gracefully
}
const filteredData = [];
for (const list of data) {
if (!Array.isArray(list)) {
filteredData.push([]); //Handle invalid list entries
continue;
}
const filteredList = [];
for (const item of list) {
if (typeof item === 'object' && item !== null) {
const newItem = { ...item }; // Create a copy to avoid modifying the original
for (const key in defaults) {
if (!(key in newItem)) {
newItem[key] = defaults[key]; // Apply default value if key is missing
}
}
filteredList.push(newItem);
} else {
filteredList.push(item); //Keep non-object items as they are.
}
}
filteredData.push(filteredList);
}
return filteredData;
}
Add your comment