Joe*_*Joe 3 javascript ramda.js
const orignalArr = [
{
personName: 'Joe'
}
]
Run Code Online (Sandbox Code Playgroud)
预期输出:
const convertedArr = [
{
name: 'Joe'
}
]
Run Code Online (Sandbox Code Playgroud)
我认为重命名的键是在一个对象中定义的(但如果有更好的映射方法就可以了):
const keymaps = {
personName: 'name'
};
Run Code Online (Sandbox Code Playgroud)
我怎样才能用 Ramda 做到这一点?
有东西 R.map
const renameKeys = R.curry((keysMap, obj) =>
R.reduce((acc, key) => R.assoc(keysMap[key] || key, obj[key], acc), {}, R.keys(obj))
);
const originalArr = [{personName: 'Joe'}]
console .log (
R.map (renameKeys ({personName: 'name'}), originalArr)
)Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js"></script>Run Code Online (Sandbox Code Playgroud)
但是随着 ES6 的普及,直接写这个很容易:
const renameKeys = (keysMap) => (obj) => Object.entries(obj).reduce(
(a, [k, v]) => k in keysMap ? {...a, [keysMap[k]]: v} : {...a, [k]: v},
{}
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3912 次 |
| 最近记录: |