const filterGenerator = (objects: { [key: string]: any }[], field: string) => { const seen = new Map(); return objects .flatMap((obj) => { if (obj[field]) { if (Array.isArray(obj[field])) { return obj[field].map((v) => ({ label: v?.name || v, value: v?.["@id"] || v, })); } return { label: obj[field]?.name || obj[field], value: obj[field]?.["@id"] || obj[field], }; } return { label: false, value: false, }; }) .filter((value) => { if (!value?.label || !value?.value) return false; const key = `${value.label}|${value.value}`; if (seen.has(key)) return false; seen.set(key, true); return true; }); }; export default filterGenerator;