我有一个看起来像这样的对象
{id: "2", name: "foo", price: "1"}
我想将其转换为以下内容
{2: {id: "2", name: "foo", price: "1"}}
如果我用一个简单的数组包装这个对象,我今天能够实现这一点,这要归功于数组的友好keyBy方法
_.keyBy([action.response], function(item) { return item.id; });
我更喜欢的当然是相同的结果,但不必先用数组包装它。 transform / reduce或其他一些lodash v4方法是否提供此功能?
答案 0 :(得分:4)
基于ES6 computed property names的简短解决方案:{ [obj.id]: obj }
示例:
var obj = {id: "2", name: "foo", price: "1"}
var transformed = { [obj.id]: obj }
console.log(transformed)
答案 1 :(得分:3)
您可以使用以下功能直接执行此操作:
function convert(obj) {
var result = {}
result[obj.id] = obj
return result
}
这就是你要找的东西吗?