tengo una matriz como esta:
arrays = [ {"y":"2020","OVO":3}, {"y":"2021","OVO":2,"Dana":1}, {"y":"2019","OVO":2,"Dana":1,"Shopepay":3}, {"y":"2018","OVO":2,"Dana":1,"Shopepay":4,"Gopay":1}, //length = 5 {"y":"2022","OVO":2,"Dana":1,"Shopepay":1} ];ahora quiero crear una nueva matriz basada en la clave de objeto más larga de las matrices. debería de esto:
{"y":"2018","OVO":2,"Dana":1,"Shopepay":4,"Gopay":1}, //length = 5a esto :
['OVO','Dana','Shopepay','Gopay']¿Cómo lograr eso en javascript? gracias de antemano.
¿Buscas algo como esto?
const arrays = [ {"y":"2020","OVO":3}, {"y":"2021","OVO":2,"Dana":1}, {"y":"2019","OVO":2,"Dana":1,"Shopepay":3}, {"y":"2018","OVO":2,"Dana":1,"Shopepay":4,"Gopay":1}, {"y":"2022","OVO":2,"Dana":1,"Shopepay":1} ]; const longestArray = arrays.sort((a, b) => Object.keys(a).length - Object.keys(b).length)?.pop(); // sort for most object with most properties console.log(Object.keys(longestArray).slice(1)); // remove first element from arrayO como simple frase de una sola línea:
Object.keys(arrays.sort((a, b) => Object.keys(a).length - Object.keys(b).length)?.pop()).slice(1);Usa .reduce() para lograr tu objetivo
arrays = [ {"y":"2020","OVO":3}, {"y":"2021","OVO":2,"Dana":1}, {"y":"2019","OVO":2,"Dana":1,"Shopepay":3}, {"y":"2018","OVO":2,"Dana":1,"Shopepay":4,"Gopay":1}, //length = 5 {"y":"2022","OVO":2,"Dana":1,"Shopepay":1} ]; const max = arrays.reduce((prev, current) => (prev.length > Object.keys(current).length) ? prev : Object.keys(current)).splice(1) console.log(max)