Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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从现有对象创建新对象 我有object obj和array arr,因此需要以预期的输出格式创建一个对象 var result =getObj("en", obj); function getObj(lang, obj){ var newobj = {}; newobj['url'] = "/"+ lang +"/"+obj[lang].map(e=>e.faq); var s ={lang: lang, url: newobj.url};

我想知道如何使用javascript从现有对象创建新对象

我有object obj和array arr,因此需要以预期的输出格式创建一个对象

var result =getObj("en", obj);

function getObj(lang, obj){
  var newobj = {};
  newobj['url'] = "/"+ lang +"/"+obj[lang].map(e=>e.faq);
  var s ={lang: lang, url: newobj.url};
  newobj['links']=[s];
  return newobj;
}


预期产出:

getObj("en", obj);
//expected result
{
  "url": "/en/faq",
  "links": [
     { lang: 'en', url: '/en/faq' },
     { lang: 'hi', url: '/hi/aksar-poochhe-jaane-vaale' }
   ]
 },{
  "url": "/en/about",
  "links": [
     { lang: 'en', url: '/en/about' },
     { lang: 'hi', url: '/hi/hamaare-baare' }
   ]
 }

getObj("hi", obj);
//expected result
 {
  "url": "/hi/aksar-poochhe-jaane-vaale",
  "links": [
     { lang: 'en', url: '/en/faq' },
     { lang: 'hi', url: '/hi/aksar-poochhe-jaane-vaale' }
   ]
 },{
  "url": "/hi/hamaare-baare",
  "links": [
     { lang: 'en', url: '/en/about' },
     { lang: 'hi', url: '/hi/hamaare-baare' }
   ]
 }

您需要使用嵌套循环。主循环返回对象的顶级数组,内部循环在每个对象内创建链接数组

函数getObjlang,obj{ 常量langObj=obj[lang][0]; return Object.keyslangObj.mapkey=>{ url:`/${lang}/${langObj[key]}`, 链接:Object.keysobj.mapl=>{ 朗:我, url:`/${l}/${obj[l][0][key]}` } }; } var obj={ 嗯:[{ 常见问题:常见问题, 关于:关于 }], 你好:[{ 常见问题解答:aksar Pooche jaane vaale, 关于:哈马雷·巴雷 }] }; console.loggetObjen,obj;
console.loggetObjhi,obj;checkout Object.assign,您的预期输出不完全有效。你是说两个对象的数组吗?至少需要两个循环或等效的迭代方法才能获得这种嵌套输出。obj.en和obj.hi的值是包含单个对象的数组。那里可以有多个对象吗?结果应该是什么样的?谢谢你的回复,但是url应该是“/hi/aksar pooche jaane vaale,/hi/hamare baare,正如预期的输出一样”`你能帮我修复它吗,我在第一个url属性中使用了错误的变量。
getObj("en", obj);
//expected result
{
  "url": "/en/faq",
  "links": [
     { lang: 'en', url: '/en/faq' },
     { lang: 'hi', url: '/hi/aksar-poochhe-jaane-vaale' }
   ]
 },{
  "url": "/en/about",
  "links": [
     { lang: 'en', url: '/en/about' },
     { lang: 'hi', url: '/hi/hamaare-baare' }
   ]
 }

getObj("hi", obj);
//expected result
 {
  "url": "/hi/aksar-poochhe-jaane-vaale",
  "links": [
     { lang: 'en', url: '/en/faq' },
     { lang: 'hi', url: '/hi/aksar-poochhe-jaane-vaale' }
   ]
 },{
  "url": "/hi/hamaare-baare",
  "links": [
     { lang: 'en', url: '/en/about' },
     { lang: 'hi', url: '/hi/hamaare-baare' }
   ]
 }