Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过值创建新对象作为javascript中的键_Javascript_Arrays_Object - Fatal编程技术网

通过值创建新对象作为javascript中的键

通过值创建新对象作为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

我想创建一个新对象,在javascript中使用值作为键。 我有一个obj
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中)我在文档中也找不到任何引用..代码毕竟很好...)