Scala';Javascript中的“toMap”

Scala';Javascript中的“toMap”,javascript,angularjs,scala,Javascript,Angularjs,Scala,是否有适合此版本的惯用javascript解决方案: var addTuple = function(map,tuple) { map[tuple[0]] = tuple[1]; return map} 我需要它以更实用的风格重写: angular.module('finance3', []) .factory('currencyConverter', ['$http', function($http) { var rates = {}; //should be future (o

是否有适合此版本的惯用javascript解决方案:

var addTuple = function(map,tuple) { map[tuple[0]] = tuple[1]; return map}
我需要它以更实用的风格重写:

angular.module('finance3', [])
.factory('currencyConverter', ['$http', function($http) {
      var rates = {}; //should be future (or some other monad) mapped from $http.sucess, but it's hard to do with Js
      var processRate = function(rate) {
          return [rate.id.substring(3,6),  window.parseFloat(rate.Rate)];
      };
      var addTuple = function(map,tuple) { map[tuple[0]] = tuple[1]; return map};
      $http.jsonp(url).success(function(data) {     
          rates = data.query.results.rate.map(processRate).reduce(addTuple, {});
      });  
     return rates
}]);
因此,
.reduce(addTuple,{})
就像这里的
toMap


顺便说一句,PS至少提供了更具反应性(但仍然是非纯功能性)的方法来更新模型。

如果您可以使用外部库,则必须将对象转换为二维数组(即,
{key:value}
[[key:value]]
)和反之亦然

var x = _.pairs({ 'barney': 36, 'fred': 40 });
// [['barney', 36], ['fred', 40]]

var y = _.zipObject(x)
// { 'fred': 30, 'barney': 40 }
您可以将示例改写为

rates = _.zipObject(data.query.results.rate.map(processRate))
可能就是您要查找的内容。@dk14来自文档:提供单个二维数组,例如[key1,value1],[key2,value2]]或两个数组,一个属性名和一个对应值。换句话说,如果你做了
。.zipObject([['barney',36],'fred',40]]它按预期工作(如示例所示)单个数组,右:),谢谢。docs的例子让我有点困惑