2013-11-08 7 views
4

В Python есть функция, называемая map, которая позволяет вам перейти: map(someFunction, [x,y,z]) и перейти к списку, в котором применяется эта функция. Есть ли javascript, эквивалентный этой функции?Javascript vs Python относительно функции Python 'map()'

Я просто изучаю Python сейчас, и хотя мне сказали, что javascript - это функциональный язык, я вижу, что я программировал в нефункциональном стиле JavaScript. Как правило, может ли javascript использоваться как функциональный язык так же эффективно, как Python? Имеются ли у него подобные трюки, такие как функция map выше?

Я также только начал курс SML, и мне интересно, сколько из того, что я узнаю, применимо и к javascript.

+1

Это называется '.map()', и это метод на прототипе Array. – Pointy

+0

Js является объектно-ориентированным функциональным. Вместо 'map (f, [])' вы делаете '[] .map (f)'. Но js также функционирует в том смысле, что так же, как Python, вы можете реализовать функцию 'map (f, [])' в javascript. Карта не является тем, что делает Python функциональным. Это возможность написать функцию «map», которая делает ее функциональной - так получилось, что стандартная библиотека имеет один. – slebetman

+0

В качестве примечания, python не делает действительно отличный функциональный язык программирования (для этого посмотрите на 'lisp',' schem', 'haskel'). Он имеет некоторые возможности, но ... он не оптимизирован для этого ... – mgilson

ответ

9

Обязательно! JavaScript не имеет много функций высшего порядка встроенных, но map это один из немногих, который является встроенный:

var numbers = [1, 2, 3]; 
var incrementedNumbers = numbers.map(function(n) { return n + 1 }); 
console.log(incrementedNumbers); // => [2, 3, 4] 

Может быть, стоит отметить, что map hasn» t были вокруг навсегда, поэтому некоторые довольно старые браузеры, возможно, не имеют этого, но достаточно легко реализовать прокладку самостоятельно.

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.6?redirectlocale=en-US&redirectslug=JavaScript% 2FNew_in_JavaScript% 2F1.6 # Array_extras – Trevor

0

Вы также можете использовать underscore.js, который добавляет массу хороших функционалистов всего лишь размером 4k.

_.map([1, 2, 3], function(num){ return num * 3; }); 
//=> [3, 6, 9] 
Смежные вопросы