Skip to content
Advertisement

How to sort multi-array / nested map by value (e.g. from Firestore) in JavaScript

I’m trying to get a multi-array / nested map sorted by value via JavaScript / TypeScript.

My array currently looks like this:

let array =
    [
      {
        classification: {
          company_id: 1
        },
        information: {
          name: 'C'
        }
      },
      {
        classification: {
          company_id: 1
        },
        information: {
          name: 'B'
        }
      },
      {
        classification: {
          company_id: 1
        },
        information: {
          name: 'A'
        }
      }
    ];

Now I’d like to sort by the ['information']['name'] values like this:

let array_sorted =
    [
      {
        classification: {
          company_id: 1
        },
        information: {
          name: 'A'
        }
      },
      {
        classification: {
          company_id: 1
        },
        information: {
          name: 'B'
        }
      },
      {
        classification: {
          company_id: 1
        },
        information: {
          name: 'C'
        }
      }
    ];

Does anybody know how to do that? I’m especially struggling with the nested stuff…

Thank you in advance!

Advertisement

Answer

Using String.prototype.localeCompare, you can compare the string values and based on that result, using Array.prototype.sort function, you can sort the arrays as follows.

let array = [{
    classification: {
      company_id: 1
    },
    information: {
      name: 'C'
    }
  },
  {
    classification: {
      company_id: 1
    },
    information: {
      name: 'B'
    }
  },
  {
    classification: {
      company_id: 1
    },
    information: {
      name: 'A'
    }
  }
];

const result = array.sort((a, b) => a.information.name.localeCompare(b.information.name));
console.log(result);
User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement