尝试使用_.invertlodash 处理对象,将旧密钥收集到数组中,而不是丢失它们。
这是我成功做到这一点的方法:
let tokens = {
y: 'years',
Y: 'years',
M: 'months',
mo: 'months',
Mo: 'months',
w: 'weeks',
W: 'weeks',
d: 'days',
D: 'days',
h: 'hours',
H: 'hours',
m: 'minutes',
mi: 'minutes',
Mi: 'minutes',
s: 'seconds',
S: 'ms'
},
print = JSON.stringify(inverter(tokens), null, 2);
document.querySelector('#test').innerHTML = print;
function inverter(obj) {
let out = {};
_.forOwn(obj, (o, k) => {
out[o] = _.concat(out[o] || [], [k]);
});
return out;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
<pre id="test"></pre>Run Code Online (Sandbox Code Playgroud)
大多数时候,我觉得我对 lib 的使用就像游泳锤一样优雅,所以我的问题是:是否有比我当前功能更简单、更优雅的“lodashy”方式?inverter()
使用_.invertBy()。根据文档:
每个倒排键对应的倒排值是负责生成倒排值的键数组。
const tokens = {"y":"years","Y":"years","M":"months","mo":"months","Mo":"months","w":"weeks","W":"weeks","d":"days","D":"days","h":"hours","H":"hours","m":"minutes","mi":"minutes","Mi":"minutes","s":"seconds","S":"ms"};
const result = _.invertBy(tokens);
console.log(result);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>
<pre id="test"></pre>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |