假设我有一个看起来像这样的对象 -
data =
a: 1
b: 2
c:
d: 3
e: 4
f:
g: 4
h:
i: 9
我想编写一个函数,它基本上克隆了这个对象,但用10的最小倍数替换数字。
a: 10
b: 20
c:
d: 30
e: 40
f:
g: 40
h:
i: 90
我想使用lodash或下划线来编写最少量的代码。这就是我目前所做的事情 -
execute = (key) ->
#console.log typeof key, key
if typeof key is 'number'
return key * 10
result = {}
_.forIn key, (value, name) ->
result[name] = execute value
return result
请推荐一些优雅干净的东西。
更新
经过lodash lib后,我找到了更好的方法 -
_.cloneDeep data,(value) -> value * 10 if typeof value is 'number'
答案 0 :(得分:0)
execute
的纯咖啡版
foo = (data, out={})->
if typeof data is 'number'
return data*10
for k of data
out[k] = foo(data[k])
return out
foo(data)
这样的递归表达式就像它们来的一样优雅。你的_.deepClone
更紧凑,因为它让lo-dash做递归,但我几乎不称它为优雅或更好。