对 angular 中的数据进行排序 7

Sorting data in angular 7

我需要对 angular 中的标签进行排序。我是从 component.ts 文件做的。排序工作正常。它任务标签的键值进行排序。但是我的应用程序是两种语言。因此,当我切换到另一种语言时,使用键对其进行排序不起作用。有什么办法可以用任何语言对它进行排序

getlabel(Id: string): Observable<Dto[]> {
return this.httpClient
  .get(
    url
  )
  .pipe(
    map((data: any) => {
      data.sort((a, b) => {
        return a.label > b.label ? 1 : -1
      })
      return data
    })

  ) as Observable
}

使用localeCompare函数:

.pipe(
    map((data: any) => {
      return data.sort((a, b) => {
        return a.label.localeCompare(b.label, 'he');
      })
    })
  ) as Observable

'he' 用于希伯来语,将其更改为您的 language code

Stackblitz DEMO

这适用于不同语言的排序

.pipe(
    map((data: any) => {
      data.sort((a, b) => {
        return this.translate
          .instant(a.label)
          .localeCompare(this.translate.instant(b.label))
      })
      return data
    })
  ) as Observable

传递输入数组中存在的键。

function sortByKey(array: [], key: any, sortType = '') {
  if (!array.length) {
     return array;
  }

   return array.sort((a, b) => {
     if (sortType === 'desc') {
          if (b[key] < a[key]) { return -1; }
          if (b[key] > a[key]) { return 1; }
      } else {
          if (a[key] < b[key]) { return -1; }
          if (a[key] > b[key]) { return 1; }
      }

      return 0;
  });
}