2

我有一个以 Array 作为类成员的类。而且我有许多类函数可以对数组的每个元素做一些事情:

function MyClass {
    this.data = new Array();
}

MyClass.prototype.something_to_do = function() {
    for(var i = 0; i <= this.data.length; i++) {
        // do something with this.data[i]
    }
}

MyClass.prototype.another_thing_to_do = function() {
    for(var i = 0; i <= this.data.length; i++) {
        // do something with this.data[i]
    }
}

如果有什么方法可以改进此代码?我正在功能语言中搜索类似“map()、filter()、reduce()”的内容:

MyClass.prototype.something_to_do = function() {
    this.data.map/filter/reduce = function(element) {       
    }
}

删除显式 for 循环的任何方法。

4

1 回答 1

6

JavaScript中有一个map()函数。看看MDN 文档

创建一个新数组,其结果是对该数组中的每个元素调用提供的函数。

MyClass.prototype.something_to_do = function() {
  this.data = this.data.map( function( item ) { 
    // do something with item aka this.data[i]
    // and return the new version afterwards
    return item;
  } );
}

因此有filter()( MDN ) 和reduce()( MDN )。

于 2012-08-14T10:08:56.773 回答