Tengo una función de reemplazo que toma los valores de un objeto y reemplaza los literales de la plantilla de esta manera:
let componentJSON = [ { "template": "<div class='${layout} ${border}'></div>" }, { "layout": "grid", "color": "blue", "border": "primary" } ]; const template = componentJSON[0].template const classes = componentJSON[1] let html = template.replace(/\$\{(.*?)\}/g, (match, key) => classes[key]); console.log(html);¿Es posible devolver (o consoleLog) la clave de objeto que no se usó? En este caso "color": "azul"
Supongo que podría eliminar la propiedad del objeto y luego examinar lo que queda en el objeto al final.
let componentJSON = [ { "template": "<div class='${layout} ${border}'></div>" }, { "layout": "grid", "color": "blue", "border": "primary" } ]; const template = componentJSON[0].template const classes = componentJSON[1] const html = template.replace( /\$\{(.*?)\}/g, (match, key) => { const str = classes[key]; delete classes[key]; return str; } ); console.log(componentJSON[1]);Mantenga un registro de las claves utilizadas y luego fíltrelas del conjunto de claves original
let componentJSON = [ { "template": "<div class='${layout} ${border}'></div>" }, { "layout": "grid", "color": "blue", "border": "primary" } ]; const [ { template }, classes ] = componentJSON; const usedKeys = new Set(); let html = template.replace(/\$\{(.*?)\}/g, (match, key) => (usedKeys.add(key), classes[key])); console.log(html); const unused = Object.fromEntries( Object.entries(classes).filter(([ key ]) => !usedKeys.has(key)) ); console.log("unused", unused);