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
在对象中用作。