javascript - 使用 jQuery 将对象转换为另一个对象

标签 javascript jquery

我在 JavaScript 文件中得到一个结果,我想将其转换为另一个对象。

我的原始结果

    [
  {
    "SName": "Set1",
    "Elements": [
      {
        "Id": "3",
        "Name": "Name1"
      },
      {
        "Id": "5",
        "Name": "Name2"
      }
    ]
  },
  {
    "SName": "Set2",
    "Elements": [
      {
        "Id": "7",
        "Name": "Name3"
      },
      {
        "Id": "8",
        "Name": "Name4"
      }
    ]
  }
]

使用 jQuery 或 JavaScript 将其转换为看起来像对象数组。我怎样才能实现这个目标?

[
  {
    "SName": "Set1",
    "Id": 3,
    "Name": "Name1"
  },
  {
    "SName": "Set1",
    "Id": 5,
    "Name": "Name2"
  },
  {
    "SName": "Set2",
    "Id": 7,
    "Name": "Name3"
  },
  {
    "SName": "Set2",
    "Id": 8,
    "Name": "Name4"
  }
]

最佳答案

var data =     [
  {
    "SName": "Set1",
    "Elements": [
      {
        "Id": "3",
        "Name": "Name1"
      },
      {
        "Id": "5",
        "Name": "Name2"
      }
    ]
  },
  {
    "SName": "Set2",
    "Elements": [
      {
        "Id": "7",
        "Name": "Name3"
      },
      {
        "Id": "8",
        "Name": "Name4"
      }
    ]
  }
];
console.log(data);

var newData = data.reduce(function (newArray, currentSet) {
    return newArray.concat(currentSet.Elements.map(function (element) {
        return Object.assign( { SName: currentSet.SName }, element);
    }));
}, []);

console.log(newData);

这里的关键是reduce函数。我们正在做的是通过循环外部数组的每个值来创建一个全新的数组。我们不断地将内部数组映射的值concat连接到新数组上。

关于javascript - 使用 jQuery 将对象转换为另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39729560/

相关文章:

javascript - 悬停时需要数组中项目的索引号

javascript - AngularJS ng-view、ng-click 和 routerProvider 不能一起工作

javascript - Electron ,来自 BrowserWindow 的 printToPDF

javascript - 将函数作为回调传递给函数

jquery - 从 jquery ajax 调用返回

jQuery 无法将元素滑回slideUp 吗?

javascript - 操纵背景颜色

javascript - 使用 postman 集合中的 Newman 脚本输出responseBody

javascript - 如何使用 Angular js 上传图片?或者如何在输入类型文件中使用/模拟 ng-model?

javascript - 从文本中删除所有空格