map / filter / reduce with Array

时间:2012-08-14 10:03:40

标签: javascript

我有一个使用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循环的方法。

1 个答案:

答案 0 :(得分:6)

JavaScript中有map()个函数。看看MDN docu

  

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

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)。