首页 > 解决方案 > Javascript 排序数组 ERROR TypeError: undefined is not an object

问题描述

嘿伙计们。

我试图弄清楚为什么我的代码不起作用,我根本找不到任何原因。我正在尝试按某些属性对数组进行排序,但出现此错误:ERROR TypeError: undefined is not an object (evaluating 'this.utils')。这就是我使用排序方法的方式:

  this.myarray.sort(this.compareDates);

这是我的排序方法:

private compareDates(firstModel: myModel, secondModel: myModel): number{
    const firstDate = new Date(this.utils.stringFormatterForDate(firstModel.date));
    const secondDate = new Date(this.utils.stringFormatterForDate(secondModel.date));

    if(firstDate < secondDate){
      return -1;
    }
    if(firstDate > secondDate){
      return 1;
    }
  }

“utils”是我通过构造函数注入的服务。如果我在其他任何地方使用服务的方法(stringFormatterForDate),它可以正常工作而不会引发任何错误

标签: javascriptarraysobjectecmascript-6

解决方案


我认为 sort 方法正在不同的范围内运行。试试这个:

this.myarray.sort(this.compareDates.bind(this));

推荐阅读