在lodash中我们使用_mapKeys方法,我这样使用:
这是一个对象数组:
const posts = [
{
id: 123,
title: 'Hello',
},
{
id: 321,
title: 'World',
},
];
从那里我使用这样的方法:
const postsObjWithKeys = _.mapKeys(posts, 'id');
console.log(postsObjWithKeys);
结果是:
{
123: {id: 123, title: 'Hello'},
321: {id: 321, title: 'World'}
}
完美!正是我想要的!
问题是如何在“反向”中实现这一目标?这意味着如果我有这样的对象:
const posts = {
123: {
title: 'Hello'
},
321: {
title: 'World'
}
}
是否可以获取密钥并将其指定为值(如果为id)?最终结果是:
const posts = {
123: {
id: 123,
title: 'Hello'
},
321: {
id: 321,
title: 'World'
}
}
答案 0 :(得分:3)
使用lodash,您可以使用_.mapValues()
:
const posts = {
123: {
title: 'Hello'
},
321: {
title: 'World'
}
}
const result = _.mapValues(posts, (value, id) => _.assign({}, value, { id }));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
答案 1 :(得分:2)
只需迭代所有键并在对象上添加id
:
const posts = {
123: {
title: 'Hello'
},
321: {
title: 'World'
}
}
Object.keys(posts).forEach(k=>{
posts[k].id = k;
});
console.log(posts);
/*
const posts = {
123: {
id: 123,
title: 'Hello'
},
321: {
id: 321,
title: 'World'
}
}
*/