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

这是一个对象:


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我不是要代码,但如果有人能给我一个转换成结果的步骤,那将是一个很大的帮助!提前致谢!


一只萌萌小番薯
浏览 138回答 2
2回答

料青山看我应如是

您可以利用扩展运算符并将流畅度与其他属性分开,然后.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);

繁花不似锦

您可以执行以下操作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);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript