2017-07-27 74 views
3

我的代碼:Lodash地圖的鍵和值

const orig = {" a ":1, " b ":2} 
let result = _.mapKeys(_.mapValues(orig, (v) => v + 1), (v, k) => k.trim()) 

實際和期望的結果= { 「一」:2, 「B」:3 }

但有一個更好的Lodashy這樣做的方式?

+0

可能不是不幸ly:https://github.com/lodash/lodash/issues/2718 – user3080953

回答

4

該解決方案使用_.transform(),它有點短。我不確定它比你的功能性解決方案更好。

const orig = {" a ": 1, " b ": 2 }; 
 

 
const result = _.transform(orig, (r, v, k) => r[k.trim()] = v + 1); 
 

 
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

1

怎麼這樣呢?

const orig = {" a ":1, " b ":2}; 
 

 
function test(object) { 
 
    let out = {}; 
 

 
    _.forEach(object, function(value, key) { 
 
    out[key.trim()] = value + 1; 
 
    }); 
 

 
    return out; 
 
} 
 

 
console.log(test(orig));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

0

使用減少,你可以這樣做:

var obj = {" a ":1, " b ":2} 
 

 
result = _.reduce(obj, (result, v, k) => { 
 
    result[k.trim()] = v + 1 
 
    return result 
 
}, {}) 
 

 
console.log(result)
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>

減少是比較熟悉的,但IMO變換似乎在這裏更合適