Javascript 将项推送到数组会使数组不可排序吗?
在我的typescript代码(角度组件)中,我需要填充一个数组,然后对它进行排序。但是,数组不排序?如果我改为“手动”实例化/填充数组,它将按预期进行排序。我错过了什么 这项工作:Javascript 将项推送到数组会使数组不可排序吗?,javascript,arrays,angular,typescript,sorting,Javascript,Arrays,Angular,Typescript,Sorting,在我的typescript代码(角度组件)中,我需要填充一个数组,然后对它进行排序。但是,数组不排序?如果我改为“手动”实例化/填充数组,它将按预期进行排序。我错过了什么 这项工作: let chartArr: any = []; chartArr = [ {text: 'AA', assignedTasks: 3}, {text: 'BB', assignedTasks: 7}, {text: 'CC', assignedTasks: 1}, {text: 'DD', ass
let chartArr: any = [];
chartArr = [
{text: 'AA', assignedTasks: 3},
{text: 'BB', assignedTasks: 7},
{text: 'CC', assignedTasks: 1},
{text: 'DD', assignedTasks: 10},
];
console.log(this.chartArr.sort((a, b) => b.assignedTasks - a.assignedTasks ));
这并不是:
let chartArr: any = [];
doc.forEach(user => {
eventTasksRefCount = this.afs.collection('eventTask', ref => ref.where('uid', '==', user.uid));
eventTasksObservableCount = eventTasksRefCount.valueChanges();
eventTasksObservableCount.subscribe(result => {
this.chartArr.push({text: user.displayName, assignedTasks: result.length });
});
console.log(this.chartArr.sort((a, b) => b.assignedTasks - a.assignedTasks ));
您必须在subscribe调用中对数组进行排序,否则,如果您对其进行排序,数据将无法准备就绪 例如: 但现在要小心,如果有新结果出现,你总是会排序,我不知道这是否是有意的
查看更多详细信息。您以同步方式显示数组,同时以非同步方式获取数据。排序不起作用,因为您正在对空数组进行排序。
let chartArr: any = [];
doc.forEach(user => {
eventTasksRefCount = this.afs.collection('eventTask', ref => ref.where('uid', '==', user.uid));
eventTasksObservableCount = eventTasksRefCount.valueChanges();
eventTasksObservableCount.subscribe(result => {
this.chartArr.push({text: user.displayName, assignedTasks: result.length });
console.log(this.chartArr.sort((a, b) => b.assignedTasks - a.assignedTasks ));
});