代码之家  ›  专栏  ›  技术社区  ›  Sumchans

Lightning web组件中的可跟踪阵列排序

  •  0
  • Sumchans  · 技术社区  · 5 年前

    正在开发新的Salesforce Lightning web组件。我试图在javascript中对多维数组进行排序。我有一个可跟踪的数组,它有几列,我想按建筑物的总价值对数据进行排序。 这是我迄今为止所做的工作,没有错误,但没有得到预期的结果。

    @track bc = [];
    @wire(getCityStats) cityStats({ data }) {
        if (data) {
          for (let i = 0; i < data.length; i++) {
            if (data[i].sumchans__Province_Code__c == 'BC') {
              this.bc.push(data[i]);
            }
          }
          sortCityByNumberOfBldgs(this.bc);
    }
    }
      sortCityByNumberOfBldgs(province) {
        province.sort(function(a,b) {
          return a[4]-b[4]
        });
      } 
    

    以下是Apex控制器中的SOQL:

    SELECT Name,sumchans__Province_Code__c,
            (select sumchans__Penetration__c,sumchans__Total_Buildings__c from sumchans__City_Stats__r) FROM sumchans__CITY_MASTER__c
    

    这就是我运行上述查询时显示数据的方式,这是存储在上述可跟踪bc数组中的数据。 enter image description here

    0 回复  |  直到 5 年前
        1
  •  0
  •   Prashant Kashyap    4 年前

    只需实现一个比较器:

    compareASC(firstVal, secondVal) {
        
        if (firstVal.sumchans__City_Stats__r.sumchans__Total_Buildings__c > secondVal.sumchans__City_Stats__r.sumchans__Total_Buildings__c) return 1;
        if (secondVal.sumchans__City_Stats__r.sumchans__Total_Buildings__c > firstVal.sumchans__City_Stats__r.sumchans__Total_Buildings__c) return -1;
        return 0;
    }
    

    然后:

    let toBeSorted = JSON.parse(JSON.stringify(data));
    toBeSorted.sort(compareASC);