如何使用lodash按给定键映射对象?

时间:2016-10-22 20:29:10

标签: javascript lodash

我有一个看起来像这样的对象

{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方法是否提供此功能?

2 个答案:

答案 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
}

这就是你要找的东西吗?