Quiero obtener dos elementos de la página y ponerlos en un objeto.
const entryElements = await page.$$('div.kpi-entry'); const contents = await Promise.all( entryElements.map(async (element) => { const objValue= await (await element.$('span.text-xl'))?.innerText(); const objKey= await (await element.$('eui-base-v0-tooltip'))?.innerText(); const kpiObject = {objValue,objKey,}; return obj; }));
obj devuelve
{ objValue: '1', objKey: 'A' }, { objValue: '2', objKey: 'B' }, { objValue: '3', objKey: 'C' }, { objValue: '4', objKey: 'D' }, { objValue: '5', objKey: 'E' }pero esperaba
{ A: '1', B: '2', C: '3', D: '4', E: '5', }cual es la mejor manera de hacer esto
Solo adapté su propio código, debe consultar MDN Working with Objects para obtener más detalles.
const entryElements = await page.$$('div.kpi-entry'); const newObject = {}; const contents = await Promise.all( entryElements.forEach(async (element) => { const objValue= await (await element.$('span.text-xl'))?.innerText(); const objKey= await (await element.$('eui-base-v0-tooltip'))?.innerText(); newObject[objKey] = objValue; }) console.log(newObject) let obj = [ { objValue: "1", objKey: "A" }, { objValue: "2", objKey: "B" }, { objValue: "3", objKey: "C" }, { objValue: "4", objKey: "E" }, { objValue: "5", objKey: "F" }, ]; let map = obj.map(element => { return { [element.objKey]: element.objValue }; }); console.log(Object.assign(...map));