简体   繁体   English

按嵌套的 object 属性对对象数组进行排序

[英]Sort array of objects by nested object property

I have an array of objects like so:我有一个像这样的对象数组:

[
  {
    "id": "07bf4920-55f4-42b4-9413-a0a9246d3e1f",
    "flatData": {
      "name": "Business Unit Commendations",
      "shortIntro": "Recognition for your valued contributions to your business unit.",
      "slug": "business-unit-commendations",
    }
  },
  {
    "id": "e85fe64e-ac34-45fd-aff1-d192c9a0b6e9",
    "flatData": {
      "name": "Pension Scheme",
      "shortIntro": "Pension scheme for all.",
      "slug": "pension-scheme",
    }
  },
  {
    "id": "1769fb14-5daa-42d3-bdb5-5c7e8462952c",
    "flatData": {
      "name": "On-Site Nursery and Childcare",
      "shortIntro": "Sponsored childcare support schemes available at some MOD sites.",
      "slug": "on-site-nursery-and-childcare",
    }
  }
]

I wish to order them alphabetically by the name property in flatData.我希望按 flatData 中的 name 属性按字母顺序排列它们。 A lot of the questions I've found dont have nested objects in them so the answers don't fit.我发现的很多问题都没有嵌套对象,所以答案不合适。

Expected outcome:预期结果:

[
  {
    "id": "07bf4920-55f4-42b4-9413-a0a9246d3e1f",
    "flatData": {
      "name": "Business Unit Commendations",
      "shortIntro": "Recognition for your valued contributions to your business unit.",
      "slug": "business-unit-commendations",
    }
  },
  {
    "id": "1769fb14-5daa-42d3-bdb5-5c7e8462952c",
    "flatData": {
      "name": "On-Site Nursery and Childcare",
      "shortIntro": "Sponsored childcare support schemes available at some MOD sites.",
      "slug": "on-site-nursery-and-childcare",
    }
  },
   {
    "id": "e85fe64e-ac34-45fd-aff1-d192c9a0b6e9",
    "flatData": {
      "name": "Pension Scheme",
      "shortIntro": "Pension scheme for all.",
      "slug": "pension-scheme",
    }
  },
]

This can be done using Array.prototype.sort function.这可以使用Array.prototype.sort function 来完成。

Inside sort function, compare the values using String.localeCompare function.sort function 内部,使用String.localeCompare function 比较值。

 const array = [ { "id": "07bf4920-55f4-42b4-9413-a0a9246d3e1f", "flatData": { "name": "Business Unit Commendations", "shortIntro": "Recognition for your valued contributions to your business unit.", "slug": "business-unit-commendations", } }, { "id": "e85fe64e-ac34-45fd-aff1-d192c9a0b6e9", "flatData": { "name": "Pension Scheme", "shortIntro": "Pension scheme for all.", "slug": "pension-scheme", } }, { "id": "1769fb14-5daa-42d3-bdb5-5c7e8462952c", "flatData": { "name": "On-Site Nursery and Childcare", "shortIntro": "Sponsored childcare support schemes available at some MOD sites.", "slug": "on-site-nursery-and-childcare", } } ] const sorted = array.sort((a, b) => a.flatData.name.localeCompare(b.flatData.name)); console.log(sorted);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM