我有angular 6应用程序,其中每个角度项目都有以下代码。
ngOnInit() {
this.LoadList("user");
this.listName.sort((a:any,b:any) => {
return a.name < b.name;
})
return this.listName;
}
onFocus() {
this.showSearchResult = true;
}
LoadList(listType:string) {
this.myService.dataList(listType).pipe(takeUntil(this.destroy$))
.subscribe(data => {
if(data.users)
this.response=data.users.;
if(this.response) {
for(let data of this.response) {
this.listName.push({name: data.name, description:data.description})
}
}
this.ref.detectChanges();
});
在这里您看到列表没有按字母顺序排列(升序),请帮助我
答案 0 :(得分:1)
首先
您的loadList
方法调用服务,我认为这是异步的。因此,您必须执行类似的操作以进行排序(请参见sortList函数)
还请注意,在对字符串进行排序时,必须使用小写字母,因为大写字母可能会返回不必要的结果
ngOnInit() {
this.LoadList("user");
}
sortList() {
this.listName.sort((a,b) => {
const nameA = a.name.toLowerCase();
const nameB = b.name.toLowerCase();
if (nameA < nameB) return -1;
if(nameA > nameB) return 1;
return 0;
})
}
onFocus() {
this.showSearchResult = true;
}
LoadList(listType:string) {
this.myService.dataList(listType).pipe(takeUntil(this.destroy$))
.subscribe(data => {
if(data.users)
this.response=data.users.;
if(this.response) {
for(let data of this.response) {
this.listName.push({name: data.name, description:data.description})
}
this.sortList();
}
this.ref.detectChanges();
});
我不知道您的实际代码,但是上面的代码会导致升序检查
var list = [{id: 10, name:'kenny'}, {id:20, name: 'abhi'}, {id: 30, name: 'c'}, {id: 40, name: 'ka'}, {id: 40, name: 'abha'}]
list.sort((a,b) => {
const nameA = a.name.toLowerCase();
const nameB = b.name.toLowerCase();
if (nameA < nameB) return -1;
if(nameA > nameB) return 1;
return 0;
})
console.log(list)