通过值创建新对象作为javascript中的键
我想创建一个新对象,在javascript中使用值作为键。 我有一个obj通过值创建新对象作为javascript中的键,javascript,arrays,object,Javascript,Arrays,Object,我想创建一个新对象,在javascript中使用值作为键。 我有一个objarrobj,如何创建键和值相同的对象 function createobj(arrobj){ var newobj = Object.assign({}, ...arrobj.map(e=>Object.values(e.fields))); return newobj } var arrobj = [{ fields: { service: "finance", country: "SG
arrobj
,如何创建键和值相同的对象
function createobj(arrobj){
var newobj = Object.assign({}, ...arrobj.map(e=>Object.values(e.fields)));
return newobj
}
var arrobj = [{
fields: {
service: "finance",
country: "SG"
}
}]
Expected Output
var newobj = {
finance: "finance",
SG: "SG"
}
您可以获取这些值,然后将它们减少为单个对象,并将这些值作为键:
函数createobj(arrobj){
返回阿罗布
.flatMap((e)=>Object.values(e.fields))
.reduce((p,c)=>((p={…p[c]:c}),p),{});
}
var arrobj=[
{
字段:{
服务:“金融”,
国家:“SG”,
},
},
];
console.log(createobj(arrobj))代码>我更改了映射函数,因此对象值将累积到一个opject,然后返回:
函数createobj(arrobj){
var newobj=Object.assign({},…arrobj.map(e=>{
var acc={};
for(让对象的值。值(例如字段)){
acc[值]=值;
}
返回acc;
}));
返回newobj
}
//测试1
var arrobj=[{
字段:{
服务:“金融”,
国家:“SG”
}
}]
log(“测试1:,createobj(arrobj));
//测试2
var arrobj2=[{
字段:{
服务:“金融”,
国家:“SG”
}
}, {
字段:{
服务:“财务2”,
国家:“SG2”
}
}]
log(“测试2:,createobj(arrobj2))代码>这将为您提供所需的输出:
function createobj(arrobj: any): any {
var newObject = {};
Object.values(arrobj[0].fields).forEach(v => {
newObject[v] = v;
});
return newObject;
}
问题是?var arrobj=[字段:{
-有些地方不对劲。很好的一个,尽管我想知道在局部范围内隐藏值fn是否是最好的例子,但如果有人把这条线拿出来,它就不会运行,并且可能很难跟踪到底是什么意思@VitaliyTerziev?在任何父范围内都没有值
变量……但是,是的,最好是将reduce链接起来eOk,也许我遗漏了什么-我可以在全局范围内调用'values',并且存在这样的fn,如果你从'createobj'fn中删除代码,它将无法工作(以前的版本).Yep链接看起来确实更好。你是对的!我是那个缺少一些东西的人,不知道全局值函数:)仅供参考-我检查了节点,然后FF和两者都缺少这个fn,所以我猜这只是调试器助手fn(至少在FF中)我在文档中也找不到任何引用..代码毕竟很好...)