【发布时间】:2012-06-11 10:58:28
【问题描述】:
是否没有普遍/标准的 Javascript 或 Coffeescript 函数可以转换对象/地图/哈希的值?
jQuery has $.map 但它只产生Arrays。
Underscore has _.map 但它也只产生Arrays。
需要明确的是,我正在寻找像这样的功能。 (这个例子是用 Coffeescript 而不是 Javascript 编写的。)
# Transforms the values in a map. (Doesn't modify `obj` — returns a new map.)
# Example usage:
# mapObjVals({ a: 'aa', b: 'bb'}, (key, value) -> value + '_!')
# --> { a: 'aa_!', b: 'bb_!' }
mapObjVals = (obj, f) ->
obj2 = {}
for k, v of obj
obj2[k] = f k, v
obj2
【问题讨论】:
-
您似乎已经回答了您自己的问题 :) 只需确保您使用
for own k, v of obj以防止被原型扩展所困扰。我会直接使用for循环而不是辅助函数,因为这种情况很少见。