从对象数组中的每个对象复制值

问题:给定一个对象数组,我想通过更改其 KEYS 的名称将每个对象复制到一个新数组。


我正在尝试转换此对象:


  items: [

    {


      "A": "Q1234",

      "B": "W1234",

      "C": 19.9,

      "D": 2

    },

    {

      "A": "Q1234",

      "B": "W1234",

      "C": 19.9,

      "D": 2

    },

对此:


  items: [

    {

      "id": "Q1234",

      "power": "W1234",

      "health": 19.9,

      "mana": 2

    },

    {

      "id": "Q1234",

      "power": "W1234",

      "health": 19.9,

      "mana": 2

    },


我尝试了以下方法,但它不起作用:


let replaceAll = () => {

  request.responseText.replace('A','id')

  request.responseText.replace('B','power')

  request.responseText.replace('C','health')

  request.responseText.replace('D','mana')

}

request.responseText 输出:


{"id":941282,"items":[{"id":117991,"power":6.5000,"health":102351,"mana":6},{"id":118993,"power":2.5000,"health":103353,"mana":1},{"id":128464,"power":11.6400,"health":112825,"mana":1}]}"


const _myItens = JSON.parse(request.responseText)


千巷猫影
浏览 123回答 2
2回答

萧十郎

您可以使用Array.map()、解构对象并使用别名创建具有新名称的变量,然后您可以使用速记属性名称重建对象:const items = [{"A":"Q1234","B":"W1234","C":19.9,"D":2},{"A":"Q1234","B":"W1234","C":19.9,"D":2}]const result = items.map(({ A: id, B: power, C: health, D: mana }) => ({  id,  power,  health,  mana}))console.log(result)

SMILET

一旦输入被固定以便可以解析JSON,创建一个函数,其将所述A,B,C,D的对象的键入id,power等的键,并.map在该功能中的每个对象:const responseText = `{ "items": [    {      "A": "Q1234",      "B": "W1234",      "C": 19.9,      "D": 2    },    {      "A": "Q1234",      "B": "W1234",      "C": 19.9,      "D": 2    }]}`;const input = JSON.parse(responseText);const keyMap = {  A: 'id',  B: 'power',  C: 'health',  D: 'mana'};const transform = shortObj => Object.fromEntries(  Object.entries(shortObj).map(([key, val]) => [keyMap[key], val]));console.log(input.items.map(transform));
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript