【问题标题】:the best way to change array in object to other obejct attr将对象中的数组更改为另一个对象 attr 的最佳方法
【发布时间】:2016-09-18 15:22:23
【问题描述】:

我有一个这样的对象数组:

[
  {
    "position": "1",
    "name": "FC Barcelona",
    "data": [
      "91",
      "38",
      "29",
      "4",
      "5",
      "112",
      "29"
    ]
  },
  {
    "position": "2",
    "name": "Real Madrid",
    "data": [
      "90",
      "38",
      "28",
      "6",
      "4",
      "110",
      "34"
    ]
  },
  {
    "position": "3",
    "name": "Atlético Madrid",
    "data": [
      "88",
      "38",
      "28",
      "4",
      "6",
      "63",
      "18"
    ]
  }
]

我想在 nodeJS 后端将它转换成这个我想使用 vanilla javascript 来转换:

[
  {
    "position": "1",
    "name": "FC Barcelona",
    "PTS": "91",
    "Pld" "38",
    "W": "29",
    "D": "4",
    "L": "5",
    "GF": "112",
    "GA": "29"
  },
  {
    "position": "2",
    "name": "Real Madrid",
    "PTS": "90",
    "Pld" "38",
    "W": "28",
    "D": "6",
    "L": "4",
    "GF": "110",
    "GA": "34"
  },
  {
    "position": "3",
    "name": "Atlético Madrid",
    "PTS": "88",
    "Pld" "38",
    "W": "28",
    "D": "4",
    "L": "6",
    "GF": "63",
    "GA": "18"
  }
]

我想获取我的主数组中任何对象的数据数组,并将数据数组的任何子对象转换为它自己对象的子对象,并使用我添加到代码中的特定键

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 我想把上面的数组转换成第二个??很难理解?
  • 我明白你想做什么,但给你一个答案对你来说并不比帮助你了解哪里出错了。

标签: javascript arrays node.js object


【解决方案1】:

您可以通过forEach 做到这一点

var ar = [{"position":"1","name":"FC Barcelona","data":["91","38","29","4","5","112","29"]},{"position":"2","name":"Real Madrid","data":["90","38","28","6","4","110","34"]},{"position":"3","name":"Atlético Madrid","data":["88","38","28","4","6","63","18"]}],
  result = [];

ar.forEach(function(e) {
  result.push({
    position: e.position,
    name: e.name,
    PT: e.data[0],
    Pld: e.data[1],
    W: e.data[2],
    D: e.data[3],
    L: e.data[4],
    GF: e.data[5],
    GA: e.data[6]
  })
})

console.log(result)

【讨论】:

    【解决方案2】:

    我不完全确定您的意思,但我认为您想将数据中的所有内容相加并将其分配给不同数组中的自己的对象?

    如果是这样,this 可能会做你想做的事。

    示例输出(使用您的数据集):

    [ { position: '1', name: 'FC Barcelona', sum: 308 },                                                                                                            
    { position: '2', name: 'Real Madrid', sum: 310 },                                                                                                             
    { position: '3', name: 'Atlético Madrid', sum: 245 } ]   
    

    【讨论】:

      【解决方案3】:

      也可以通过map实现这一点

      var ar = [{"position":"1","name":"FC Barcelona","data":["91","38","29","4","5","112","29"]},{"position":"2","name":"Real Madrid","data":["90","38","28","6","4","110","34"]},{"position":"3","name":"Atlético Madrid","data":["88","38","28","4","6","63","18"]}],
      
      var result = ar.map(function(e) {
        return{
          position: e.position,
          name: e.name,
          PT: e.data[0],
          Pld: e.data[1],
          W: e.data[2],
          D: e.data[3],
          L: e.data[4],
          GF: e.data[5],
          GA: e.data[6]
        };
      });
      
      console.log(result)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 2013-05-23
        • 2015-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多