【发布时间】:2019-03-02 03:06:02
【问题描述】:
我曾经有一个包含一个对象的数组,如下所示:
var myObj = [{'key': {an object}}];
我将它转换成这样的对象:
Object.assign({}, ...myobj)
得到这个:{'key': [{an object}]}
问题是,在myobj 现在我有两个项目,具有相同的 KEY,如下所示:
[{'key': {an object}}, {'key': {another object}}]
如果我执行相同的Object.assign,我得到的结果是一个对象,里面有两个其他对象,这是正常的:{'key': {an object}}, {'key': {another object}}
问题是我可以将我的myobj 转换为那个结构吗:
{'key': [{an object}, {another object}]}
【问题讨论】:
-
您当然可以编写代码来做到这一点。但使用
Object.assign并不能很好地自动使用。 -
let newObj = { key: myObj.map(o => Object.assign({}, o.key)) }; -
"如果我执行相同的 Object.assign 得到的结果是一个对象,其中包含另外两个对象,"。实际上不,你得到一个带有单个键的对象,其中包含共享该键的最后一个对象,所以
{'key': {another object}} -
我建议你使用 lodash,你可以使用
_.groupBy(_.flatMap(arr, _.entries), 0)。如果您需要有关 lodash 的详细答案来解释这一点,请告诉我
标签: javascript arrays object ecmascript-6 spread-syntax