i have an array like this:
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}
];
now i want to create new array based on longest object key from arrays.
should from this:
{"y":"2018","OVO":2,"Dana":1,"Shopepay":4,"Gopay":1}, //length = 5
to this :
['OVO','Dana','Shopepay','Gopay']
how to achieve that in javascript?
thanks in advance.
>Solution :
Looking for something like this?
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 array
Or as simple one-liner:
Object.keys(arrays.sort((a, b) => Object.keys(a).length - Object.keys(b).length)?.pop()).slice(1);