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

Javascript 将字典转换为保留字典键的数组,javascript,arrays,dictionary,Javascript,Arrays,Dictionary,我正试图找到一种更优雅的方法,将一个字典集转换为一个字典数组,并保留原始字典键的信息 就 let data= { boss: { name:"Peter", phone:"123"}, minion: { name:"Bob", phone:"456"}, slave: { name:"Pat", phone: "789"}

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

let data= { boss: { name:"Peter", phone:"123"},
            minion: { name:"Bob", phone:"456"},
            slave: { name:"Pat", phone: "789"} 
          }
我想想出一些能让我

output = [ { role:"boss", name:"Peter", phone:"123"},
           { role:"minion", name:"Bob", phone:"456"},
           { role:"slave", name:"Pat",  phone:"789"}
         ]
我的解决方案是使用
Object.keys
方法,但我认为这不是很有效。有些事情告诉我,我要沿着这条复杂的路走,肯定有一条更容易的路,但我找不到:

 Object.keys(data)
                .map((elem, i) => {
                    return Object.assign({role: e}, Object.values(data)[i]);
                })
这是我想要做的最干净的方式吗


谢谢

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

let data={老板:{名字:“彼得”,电话:“123”},仆从:{名字:“鲍勃”,电话:“456”},奴隶:{名字:“帕特”,电话:“789”},
result=Object.entries(data.map)([role,values])=>({role,…values}));
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
使用
Object.entries
,可以将[key,value]对作为数组,并可以使用
array.map
函数获得所需的结果

let数据={
老板:{姓名:“彼得”,电话:“123”},
仆从:{姓名:“鲍勃”,电话:“456”},
奴隶:{姓名:“帕特”,电话:“789”}
};
const result=Object.entries(data.map)([key,value])=>({
角色:关键,
价值
}));

控制台日志(结果)
您可以使用
Array.prototype.reduce
Object.entries
循环字典中的每个条目,并将其缩减为数组:

const data={老板:{名字:“彼得”,电话:“123”},仆从:{名字:“鲍勃”,电话:“456”},奴隶:{名字:“帕特”,电话:“789”};
函数getArray(数据){
返回Object.entries(data).reduce((a[k,v])=>{
a、 push({role:k,…v});
返回a;
}, []);
}

log(getArray(data))
您可以使用
const output=Object.entries(data).map({role,value)=>({…value,role}));
很好的答案,与另一个答案非常相似,但我想完全理解:在输入“lambda”([role,values])时,我们在哪里确切地指定角色的键是“role”
我们将一个普通字符串作为角色输入…如何将其转换为输出dict的键?变量
role
在对象中用作。