2

クラスメンバーとして配列を持つクラスがあります。そして、配列の各要素で何かを行う多くのクラス関数があります。

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

map()JavaScriptには関数があります。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 に答える