Me gustaría agrupar por un objeto basado en un nombre parcial y agregarlos a las variables
data = { SCHOOL-ADMISSION_YEAR: "2021" SCHOOL-SCHOOL_NAME: "ABC SCHOOL" SCHOOL-SCHOOL_LOCATION: "NEWYORK" ENROLLMENT-ADMISSION_YEAR: "2021" ENROLLMENT-SUBMISSION_DATE: "2020-04-02" ENROLLMENT-ENROLLMENT_DATE: "2020-06-02" }El grupo debe ser
School = { ADMISSION_YEAR: "2021", SCHOOL_NAME: "ABC SCHOOL", SCHOOL_LOCATION: "NEWYORK", } Enrollment = { ADMISSION_YEAR: "2021", SUBMISSION_DATE: "2020-04-02", ENROLLMENT_DATE: "2020-06-02", } var school = data.filter(p => p.contains('SCHOOL')); var enrollment = data.filter(p => p.contains('ENROLLMENT'));Los objetos simples no tienen un método de filter y deben iterarse con un bucle. Para ser filtrado y mapeado, un objeto se puede convertir en una matriz de entrada y viceversa, por ejemplo, con ES2019 fromEntries :
const school = Object.fromEntries( Object.entries(data) .filter(([key]) => key.includes('SCHOOL-')) .map(([key, val]) => [key.replace('SCHOOL-', ''), val]) );Para una matriz de objetos es:
const school = Object.entries(data) .filter(([key]) => key.includes('SCHOOL-')) .map(([key, val]) => ({ [key.replace('SCHOOL-', '')]: val }));Creo que esto te funcionará:
function getAllWithSubstring(substring) { let dataWithSubstring = []; for (let key of Object.keys(data)) { if (key.includes(substring)) { dataWithSubstring.push(data[key]) } } return dataWithSubstring; }Entonces puedes llamarlo así:
getAllWithSubstring("SCHOOL"); // => ['2021', 'ABC SCHOOL', 'NEWYORK'] getAllWithSubstring("ENROLLMENT"); // => ['2021', '2020-04-02', '2020-06-02']