简体   繁体   English

使用javascript从现有对象中新建对象

[英]New object from existing object using javascript

I would like to know how to create a new object from existing object using javascript. 我想知道如何使用javascript从现有对象创建新对象。

I have object obj and array arr , from that need to create a object in the expected output format. 我有对象obj和数组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;
}


    var obj={
      "en": [{
      "faq": "faq",
      "about": "about"
      }],
      "hi": [{
      "faq": "aksar-poochhe-jaane-vaale",
      "about": "hamaare-baare"
      }]    
    }

Expected Output: 预期产量:

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' }
   ]
 }

You need to use nested loops. 您需要使用嵌套循环。 The main loop returns the top-level array of objects, and the inner loop creates the links array within each object. 主循环返回对象的顶级数组,内部循环在每个对象内创建links数组。

 function getObj(lang, obj) { const langObj = obj[lang][0]; return Object.keys(langObj).map(key => ({ url: `/${lang}/${langObj[key]}`, links: Object.keys(obj).map(l => ({ lang: l, url: `/${l}/${obj[l][0][key]}` })) })); } var obj = { "en": [{ "faq": "faq", "about": "about" }], "hi": [{ "faq": "aksar-poochhe-jaane-vaale", "about": "hamaare-baare" }] }; console.log(getObj("en", obj)); console.log(getObj("hi", obj)); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM