Home > Blockchain >  How to sort the nested object data in react-native
How to sort the nested object data in react-native

Time:02-12

    {
    "lion":{
    "age_in_years":"10",
    "name":"king",
    "country":"africa"
    },

    "elephant":{
    "age_in_years":"15",
    "name":"hero",
    "country":"usa"
    },

    "racoon":{
    "age_in_years":"5",
    "name":"thanos",
    "country":"syria"
    },
   }

This is the data I'm getting through a web socket in react-native. I want to sort it in ascending order based on the "age_in_years". So the oldest animal's data should be shown at top and the youngest data at the last.

CodePudding user response:

You sould better work with an array insted of object as below, first map it into array and parse the age_in_years and sort it.

const obj2Array = Object.entries(<YourObject>).map(([key, value]) => ({...value, _id: key, age_in_years: parseInt(value.age_in_years)}));
const sorted = obj2Array.sort((a, b) => a.age_in_years - b.age_in_years);

Then you can use .reduce if you wan the object, nevertheless you can use the sorted array to render it.

CodePudding user response:

Sort by age in years oldest first

// use slice() to copy the array
    var byAge = array.slice(0);
    byAge.sort(function(a,b) {
        return a.age_in_years - b.age_in_years ;
    });

CodePudding user response:

Store the values in array and make a sort function.

const numbers = [info.lion.age_in_years, info.elephant.age_in_years, info.racoon.age_in_years];

const ascNumbers = numbers.sort((a,b) =>  a-b);

If you need descending make it like this:

 const descNumbers = numbers.sort((a,b) =>  b-a);
  • Related