为了账号安全,请及时绑定邮箱和手机立即绑定

我正在尝试将 Object 转换为 javascript 中的对象数组

我正在尝试将 Object 转换为 javascript 中的对象数组

一只萌萌小番薯 2023-05-25 15:44:28
这是一个对象:const language = {  fluency: {    "English": "Advanced",    "French": "Intermediate"  },  read: ["English", "French"],  speak: ["English"],  write: ["English"]};我正在尝试转换为对象数组,例如:const newLanguage = [    {        language: "English",        fluency: "Advanced",        read: true,        speak: true,        write: true,    },    {        language: "French",        fluency: "Intermediate",        read: false,        speak: false,        write: false,    }]这是我尝试过的结果:var values = Object.entries(language).map(([k, v]) => ({[k]: v}))结果是:[  { fluency: { English: 'Advanced', French: 'Intermediate' } },  { read: [ 'English', 'French' ] },  { speak: [ 'English' ] },  { write: [ 'English' ] }]PS我不是要代码,但如果有人能给我一个转换成结果的步骤,那将是一个很大的帮助!提前致谢!
查看完整描述

2 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您可以利用扩展运算符并将流畅度与其他属性分开,然后.map()根据提取的流畅度值构建对象数组。Array.reduce可用于根据rest变量的属性构建对象:

const language = {

  fluency: {

    "English": "Advanced",

    "French": "Intermediate"

  },

  read: ["English", "French"],

  speak: ["English"],

  write: ["English"]

};



let {

  fluency,

  ...rest

} = language;


let result = Object.entries(fluency).map(([lang, flue]) =>

  Object.keys(rest)

  .reduce((obj, skill) => {

    obj[skill] = rest[skill].includes(lang);

    return obj;

  }, {

    language: lang,

    fluency: flue

  })

);


console.log(result);



查看完整回答
反对 回复 2023-05-25
?
繁花不似锦

TA贡献1851条经验 获得超4个赞

您可以执行以下操作


const language = {

  fluency: {

    "English": "Advanced",

    "French": "Intermediate"

  },

  read: ["English", "French"],

  speak: ["English"],

  write: ["English"]

};


const newLanguage = []


for (const [key, value] of Object.entries(language.fluency)) {

  newLanguage.push({

        language: key,

        fluency: value,

        read: language.read.includes(key),

        speak: language.speak.includes(key),

        write: language.write.includes(key),

    });

}


console.log(newLanguage);


查看完整回答
反对 回复 2023-05-25
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号