簡體   English   中英

如何在 JavaScript 中按值(例如來自 Firestore)對多數組/嵌套 map 進行排序

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

我正在嘗試通過 JavaScript / TypeScript 按值排序的多數組/嵌套 map。

我的數組目前看起來像這樣:

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

現在我想像這樣按['information']['name']值排序:

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

有人知道該怎么做嗎? 我特別為嵌套的東西苦苦掙扎......

先感謝您!

使用String.prototype.localeCompare ,您可以比較字符串值並基於該結果,使用Array.prototype.sort function,您可以對 arrays 進行如下排序。

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

您可以使用排序 function。 它看起來像這樣:

const array_sorted = array.sort(
  (a, b) => {
    if (a > b.information.name) return -1;
    if (a < b.information.name) return 1;
    return 0;
  }, 0
)

您可以通過交換 1 和 -1 來反轉順序。 排序 function 采用 function 的第一個參數,返回 -1、1 或 0,表示順序,第二個參數設置變量“a”的初始值(可選)。 我已將初始值設置為 0,這就是我喜歡使用排序 function 的方式,因為我認為它更容易編寫:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM