javascript - array.sort() 函数中的 "Cannot read property ' formatTime ' of undefined"错误

标签 javascript multidimensional-array ember.js

我有一个 array.sort() 函数可以对时间进行排序,但是,它一直返回此错误。这是我的代码:

  sortTime(columnIndex, sortingAZ){
  var rowArray = this.get('tableArr').slice(0); //gets array of arrays
    rowArray.sort(function(a,b) {
        var time1 = this.formatTime(a[columnIndex]); //formats time into military time
        var time2 = this.formatTime(b[columnIndex]);
        return time1 - time2;
        });

这里是调用的 formatTime 函数:

   formatTime(time){

//seperates time into hours and minutes
var colonIndex = time.search(":");
var hour = parseInt(time.substring(0, colonIndex));
var minute = time.substring(colonIndex+1, time.length);
if(time.search("pm")>=0&&hour!=12){ //if it is pm, add 12 to convert to military time (except 12 pm)
    hour+=12;
}
else if(time.search("am")>=0&&hour==12){ //if it is 12 am, set hour to 0
hour = 0;
}
var milTime = hour.toString()+minute.toString(); //recombine hour and minute
milTime = parseInt(milTime);
return milTime;
}

我已经通过调用console.log(formatTime(rowArray[0][columnIndex]))测试了formatTime()函数,它执行正确,没有错误.该错误似乎是 rowArray.sort() 函数的局部错误。

此外,我在这里相对较新,所以如果您需要更多信息或者我的帖子有什么问题,请告诉我。

编辑:这不同于 How to access the correct `this` inside a callback?因为我的解决方案只需要一个箭头函数。不过,我非常感谢对这个的深入解释

最佳答案

将其更改为箭头函数,以便此上下文在内部可用。在常规函数中,除非您将 this 引用到局部变量或将其更改为如下所示的箭头函数,否则您将无法访问它

   rowArray.sort((a,b) => {
    var time1 = this.formatTime(a[columnIndex]); //formats time into military time
    var time2 = this.formatTime(b[columnIndex]);
    return time1 - time2;
    });

关于javascript - array.sort() 函数中的 "Cannot read property ' formatTime ' of undefined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54496876/

相关文章:

javascript - 如何传递嵌套服务并从 Angular 工厂获取响应到 Controller

javascript - 无法在reactjs中添加json

php - 如何在php中删除数组键名称中的空格?

javascript - Ember.js:回调函数中的 this._super

javascript - Ember 应用程序查看本地主机 URL 中的哈希值

javascript - 从下拉列表中选择一个列表项以打开模式?我应该使用 jquery/js 吗?

javascript - 如何使用 javascript 最有效地从该 html 字符串中提取内容? (最高性能 = 最低毫秒)

java - 将嵌套列表转换为二维数组

c++ - 打印所有可能的结果 C++?

twitter-bootstrap - 如何在 ember.js 中设置事件菜单栏项