对 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
这适用于不同语言的排序
.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;
});
}
我需要对 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
这适用于不同语言的排序
.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;
});
}