【发布时间】:2017-11-23 17:19:31
【问题描述】:
我有一个对象数组,我想将其转换为一个对象,其中对象键是对象的属性之一,例如:
原始数组示例:
const myArray = [
{"groupName":"groupname","description":"nice description here","name":"name1","value":107},
{"groupName":"groupname","description":"nice description here","name":"name1","value":107}
]
使用 es6 不错的新功能,Object.assign 非常接近我的需要,但它为对象分配了数字键,例如:
let newObject = Object.assign({}, myArray);
这给了我一个非常接近的对象,例如:
{
"0": {"groupName":"groupname","description":"nice description here","name":"name1","value":107},
"1": {"groupName":"groupname","description":"nice description here","name":"name1","value":107}
}
但我真正需要的是将对象的属性之一作为键而不是分配的数字,例如:
{
"name1": {"groupName":"groupname","description":"nice description here","name":"name1","value":107},
"name2": {"groupName":"groupname","description":"nice description here","name":"name2","value":107}
}
我可以迭代和创建对象,但是在使用 Object.assign 提供了一个非常接近的解决方案之后,我想知道 es6 中是否有一种方法可以在不使用 forEach 或 map 进行迭代的情况下做同样的事情。
想法?
【问题讨论】:
-
你确定没有重名吗?如果是这样,那么一些对象将会丢失。
-
@ibrahimmahrir 我理解,但是是的,在真实情况下没有重复的名称。无论如何都要发送警告!
标签: javascript arrays object ecmascript-6