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

Javascript - 将数组列表的对象转换为新的格式化对象?

Javascript - 将数组列表的对象转换为新的格式化对象?

慕码人2483693 2022-10-21 09:35:17
我正在尝试使用 javascript 将包含数组的对象转换为另一个对象。下面是对象字段的示例以及格式化后的示例。let Fields = {  GAME: [    { code: '{{PES}}', title: { en: "playPES"} },    { code: '{{FIFA}}', title: { en: "playFIFA " } },  ]};我需要新字段看起来像这样let newFields = {name: 'GAME', tags:[   { name: 'playPES', value: "{{PES}}" },   { name: 'playFIFA', value: "{{FIFA}}" }      ]}, 一位贡献者向我建议了这样的方法,但我认为需要对其进行修改,但无法弄清楚。export const transform = (fields) => ({  tags: Object .entries (fields) .map (([name, innerFields]) => ({    name,    tags: innerFields.map(({code, title: title: {en})=>({name: en, value: code}))  }))});// newFields= 变换(字段)我是使用 javascript 的新手,因此非常感谢任何帮助,谢谢。
查看完整描述

4 回答

?
GCT1015

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

使用您发布的条目方法:


let Fields = {

  GAME: [

    { code: '{{PES}}', title: { en: "playPES"} },

    { code: '{{FIFA}}', title: { en: "playFIFA " } },

  ]

};


// 1. Obtain keys and values from first object

Fields = Object.entries(oldFields);


// 2. Create new object

const newFields = {};


// 3. Create the name key value pair from new Fields array

newFields.name = Fields[0][0];


// 4. Create the tags key value pair by mapping the subarray in the new Fields array

newFields.tags = Fields[0][1].map(entry => ({ name: entry.title.en, value: entry.code }));


查看完整回答
反对 回复 2022-10-21
?
PIPIONE

TA贡献1829条经验 获得超9个赞

Object.entries(Fields)将返回这个:


[

  "GAME",

  [TagsArray]

]

并将Object.entries(Fields).map映射此值。


第一张地图,将只接收GAME,而不是一个数组。


将代码更改为如下所示:


export const transform = (Fields) => {

  const [name, tags] = Object.entries(Fields);


  return {

    name,

    tags: tags.map(({ code, title }) => ({

      name: title.en,

      value: code

    }))

  }

}

希望它有帮助:)


查看完整回答
反对 回复 2022-10-21
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

let Fields = {

    GAME: [

      { code: '{{PES}}', title: { en: "playPES"} },

      { code: '{{FIFA}}', title: { en: "playFIFA " } },

    ]

  };

  let newFields = {

    name: 'GAME', 

        tags:[

            { name: 'playPES', value: "{{PES}}" },

            { name: 'playFIFA', value: "{{FIFA}}" }

        ]

    }

  let answer = {

    name: "Game",

        tags: [


        ]

  }

  Fields.GAME.map(i => {

      var JSON = {

        "name": i.title.en,

        "value": i.code

      }

      answer.tags.push(JSON);

  });

  console.log(answer);


查看完整回答
反对 回复 2022-10-21
?
江户川乱折腾

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

const transform = (o) => {

    return Object.entries(o).map((e)=>({

        name: e[0],

        tags: e[1].map((k)=>({name: (k.title)?k.title.en:undefined, value: k.code}))

    }))[0]

}


console.log(transform({

  GAME: [

    { code: '{{PES}}', title: { en: "playPES"} },

    { code: '{{FIFA}}', title: { en: "playFIFA " } },

  ]

}))


查看完整回答
反对 回复 2022-10-21
  • 4 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信