Reputation: 45295
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
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