javascript - 使用 javascript 从现有对象创建新对象

标签 javascript arrays object

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

我有对象 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"
      }]    
    }

预期输出:

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

最佳答案

您需要使用嵌套循环。主循环返回顶级对象数组,内部循环在每个对象内创建 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));

关于javascript - 使用 javascript 从现有对象创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57507856/

相关文章:

javascript - 如何在 Firebase 中获取 Unix 时间戳?

c++ - 二维动态字符数组cpp

c - 从文件中读取多行关键字作为字符数组?在 C 中

java - 重写 HashCode,什么时候这样做不会有问题?

ruby - 扩展 ruby 对象; extend_object 回调阻止实例方法被扩展

java - 类型转换用括号括起来的原因

javascript - 如何找到所有创建的对象的总数?

javascript - 如何将 Nivo Slider 缩小到移动尺寸?

php - javascript 函数在特定情况下不返回值

arrays - 如何在较低和较高的结果上获取 .filter 的枚举 .map 值,(_ :max) applied