将字典转换为保留字典键的数组

ggo*_*mar 4 javascript arrays dictionary

我试图找到一种更优雅的方法将字典字典转换为字典数组并保留原始字典的键信息。

如果是

let data= { boss: { name:"Peter", phone:"123"},
            minion: { name:"Bob", phone:"456"},
            slave: { name:"Pat", phone: "789"} 
          }
Run Code Online (Sandbox Code Playgroud)

我想想出一些可以给我的东西

output = [ { role:"boss", name:"Peter", phone:"123"},
           { role:"minion", name:"Bob", phone:"456"},
           { role:"slave", name:"Pat",  phone:"789"}
         ]
Run Code Online (Sandbox Code Playgroud)

我的解决方案是使用该Object.keys方法,但我认为效率不是很高。有些东西告诉我,我正在走复杂的全方位道路,并且必须有一条更简单的道路,但我无法理解:

 Object.keys(data)
                .map((elem, i) => {
                    return Object.assign({role: e}, Object.values(data)[i]);
                })
Run Code Online (Sandbox Code Playgroud)

这是做我想做的事情的最干净的方式吗?

谢谢

Nin*_*olz 7

您可以映射条目并为新对象选择键/角色。

let data = { boss: { name: "Peter", phone: "123" }, minion: { name: "Bob", phone: "456" }, slave: { name: "Pat", phone: "789" } },
    result = Object.entries(data).map(([role, values]) => ({ role, ...values }));

console.log(result);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)