如何在 react-native 中对嵌套对象数据进行排序

How to sort the nested object data in react-native

    {
    "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"
    },
   }

这是我在 react-native 中通过网络套接字获取的数据。我想根据“age_in_years”按升序对其进行排序。所以最老的动物数据应该显示在顶部,最小的数据显示在最后。

将值存储在数组中并进行排序。

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);

如果需要降序,可以这样:

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

你最好使用如下所示的对象数组,首先将其映射到数组并解析 age_in_years 并对其进行排序。

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);

然后你可以使用.reduce如果你想要返回对象,但是你可以使用排序数组来渲染它。

按年龄从大到大排序

// 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 ;
    });