3

Данный набор «Яблоко», «банан» и «Orange», создайте следующее:Создание карты с одинаковыми значениями и ключами образом FP ​​с помощью ES6/Harmony

{ "Apple": "Apple", "Banana": "Banana", "Orange": "Orange" }

что , каждая строка становится ключом, а также значением.

(Это, кстати, что мало KeyMirror JS утилита Facebook, делает в их Flux примерах.)

Есть Функциональное программирование-стиль один лайнер способ сделать это с помощью ES6/Harmony, например:

["Apple", "Banana", "Orange"].map(v => v: v)

, а не нефункциональные способом программирования делать это, например:

let o = {}; for (let v of ["Apple", "Banana", "Orange"]) o[v] = v;

+1

FWIW, в Undescore/Lodash (с поддержкой вплоть до ES3) - 'вар обр = [ "Яблоко", "банан",«Orange «]; _.объект (arr, arr); ' – kangax

ответ

2

как об этом, .reduce(function(obj, str){obj[str] = str; return obj;}, {})

для например:

var arry = ["Apple", "Banana", "Orange"]; 
var map = arry.reduce(function(obj, str){obj[str] = str; return obj;}, {}); 
+0

приятно, спасибо. :) Я думал, что это еще не возможно. :) Но это хороший ответ. С нетерпением ждем показателей производительности для этого и для JS, чтобы иметь больше методов FP, таких как foldLeft/Right. – bjfletcher

+2

'['Apple', 'Banana', 'Orange']. Reduce ((m, v) => {m [v] = v; return m;}, {})); // используя функцию стрелки ' – bjfletcher