Javascript 将项推送到数组会使数组不可排序吗?

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

在我的typescript代码(角度组件)中,我需要填充一个数组,然后对它进行排序。但是,数组不排序?如果我改为“手动”实例化/填充数组,它将按预期进行排序。我错过了什么

这项工作:

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 ));
        });