ceth
ceth

Reputation: 45295

map/filter/reduce with Array

I have a class with Array as a class member. And I have many class functions that do something with each element of 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]
    }
}

If there any way to improve this code? I'm searching something like 'map(), filter(), reduce()' in the functional languages:

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

Any way to remove explicit for-loop.

Upvotes: 2

Views: 8148

Answers (1)

Sirko
Sirko

Reputation: 74046

There is a map() function in JavaScript. Have a look at the MDN docu:

Creates a new array with the results of calling a provided function on every element in this array.

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;
  } );
}

Accordingly there are filter() (MDN) and reduce() (MDN).

Upvotes: 6

Related Questions