将对象数组转换为新数组及其子数组

2023-12-19

我有一个像这样的数组

var data = [
    {
        name: "Movies", info: "category_name",
        content: [
            { name: "Interstellar", info: "category_data" },
            { name: "Dark Knight", info: "category_data" },
        ]
    },
    {
        name: "Music", info: "category_name",
        content: [
            { name: "Adams", info: "category_data" },
            { name: "Nirvana", info: "category_data" },
        ]
    },
    {
        name: "Places", info: "category_name",
        content: [
            { name: "Jordan", info: "category_data" },
            { name: "Punjab", info: "category_data" },
        ]
    },
]

并想把它改造成这样

var transformedArray= [
  { name: "Movies", info: "category_name" },
  { name: "Interstellar", info: "category_data" },
  { name: "Dark Knight", info: "category_data" },
  { name: "Music", info: "category_name" },
  { name: "Adams", info: "category_data" },
  { name: "Nirvana", info: "category_data" },
  { name: "Places", info: "category_name" },
  { name: "Jordan", info: "category_data" },
  { name: "Punjab", info: "category_data" },
]

我不知道什么关键字适合这种情况, 我尝试将它映射到新数组中,但它与我预期的不一样

var newArr = []

var manipulate = data.map(item => {
    return (
        newArr.push(item),
        new1.map(items => {
            return (
                new1.push(items)
            )
        })
    )
})

那么如何将“数据”操作为“transformedArray”


Use Array.prototype.flatMap() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap。如果您的浏览器或 Node.js 版本尚未原生支持此功能,您可以在下面添加一个简单的 polyfill,基于规格 https://www.ecma-international.org/ecma-262/10.0/index.html#sec-array.prototype.flatmap:

if (!Array.prototype.flatMap) {
  Object.defineProperty(Array.prototype, 'flatMap', {
    configurable: true,
    writable: true,
    value: function flatMap (callback, thisArg = undefined) {
      return this.reduce((array, ...args) => {
        const element = callback.apply(thisArg, args);

        if (Array.isArray(element)) array.push(...element);
        else array.push(element);

        return array;
      }, []);
    }
  });
}

const data = [{name:'Movies',info:'category_name',content:[{name:'Interstellar',info:'category_data'},{name:'Dark Knight',info:'category_data'}]},{name:'Music',info:'category_name',content:[{name:'Adams',info:'category_data'},{name:'Nirvana',info:'category_data'}]},{name:'Places',info:'category_name',content:[{name:'Jordan',info:'category_data'},{name:'Punjab',info:'category_data'}]}];
const transformedArray = data.flatMap(({ content, ...o }) => [o, ...content]);

console.log(transformedArray);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将对象数组转换为新数组及其子数组 的相关文章

随机推荐

  • 自动“继续”Google 弹出窗口的文档

    如何在我的网站上获得自动 使用 Google 登录 框架之一 例如 如果您登录帐户并访问 Kayak com 就会发生这种情况 任何我遇到的文档 https developers google com identity sign in we
  • 使用资产变量中的图像 src

    我最近遇到了图像问题 一切都很好 直到您必须在页面上显示图像列表 问题是当我们直接给出src对于带有硬编码字符串的图像 它可以使用像这样的 url assets any image png 但是如果我尝试将 url 移动到任何变量 对象 数
  • 如何在 2 个或更多 iOS 设备上同步音频

    我必须在给定的时间点执行一个操作 在多个设备上一次播放歌曲 没有延迟 我的要求是该应用程序不应使用任何互联网连接 所以我需要一个播放数据 音频 的确切时间点 我已经尝试过以下操作 5 秒后在所有设备上播放歌曲 仍然会导致毫秒的延迟 发送一条
  • New-PSDrive --Persist 不起作用

    我正在使用 powershell 映射几台计算机上的一些网络驱动器 它大部分工作正常 但现在在我以前从未尝试过的计算机上失败了 我正在做 New PSDrive Persist Name name PSProvider FileSystem
  • Matplotlib - 查找条形图宽度值

    希望这里有一个相对简单的问题 我正在绘制两个条形图 其中一个类别较多 因此每个条形的宽度较小 请参阅下面的示例代码 图表 简单 标准绘图 fig ax1 ax2 plt subplots 1 2 sharey True ax1 set ti
  • 如何将全局作用域变量引用到局部作用域?

    var b 1 function someFunc b here 我希望能够引用在函数外部定义的变量 b 这如何在 JavaScript 中完成 您需要通过以下方式访问它global object 即window在浏览器中和global例如
  • 如何避免 TDateTime 数据舍入

    我正在为 FMX 编写列和单元格类TGrid其中将包含TCalendarEdit and TTimeEdit每个单元格中的实例 除了正确处理这些子控件中所做的更改之外 一切正常 type TFMTValue
  • 使用数组过滤 Linq 中的 IEnumerable

    如何添加字符串数组 string BranchIds 1 2 3 Linq 里面包含什么 我正在寻找类似的东西 var a abc GetRoutes 0 Where n gt n BranchId Contains BranchIds T
  • 如何从终端打开网络风暴

    要从终端编辑文件 我使用 subl 用于 sublime text 来编辑文件 示例 如果我需要编辑 app js 文件 我使用 subl app js 有什么方法可以设置 webstorm 从终端打开吗 在终端中尝试 wstorm and
  • 获取启动驱动器的序列号和其他信息

    我正在尝试获取启动驱动器的序列号 但我还不知道该怎么做 我确实知道分区 硬盘驱动器 但我想要启动分区的序列号 这是我到目前为止所拥有的 var searcher new ManagementObjectSearcher SELECT FRO
  • 默认成员值最佳实践

    编写 C 11 代码时在类的头文件中为类成员设置默认值是一个好习惯吗 或者在类的构造函数中执行此操作更好 EDIT I mean foo h include
  • Django 联合查询

    我需要在 Django 中使用 3 个模型 即 WebQuery WebReply 和 BusinessOwners 开发 UNION 查询 输出应采用以下形式 conversation id b id from user id email
  • 如何在python 3.7中安装pyramid-arima

    我正在尝试在 Windows10 上的 python 3 7 中实现 auto arima 所以我尝试使用以下命令安装 Pyramid armia pip install pyramid arima 但我收到错误消息 Could not f
  • 类型错误:输入最多需要 1 个参数,但得到 3 个

    我正在用 Python 制作一个小型猜谜游戏 计算机猜测玩家选择的数字 当我尝试要求用户输入时出现错误 answer input Is it guess 这条线抛出 类型错误 输入最多需要 1 个参数 但得到 3 个 我究竟做错了什么 in
  • 根据所选的第一个下拉列表获取下拉列表的值

    PHP MYSQL div style width 100 margin inherit padding left 100px div
  • 空手道中具有未定义变量的三元条件逻辑

    我有一个空手道功能文件 我们称之为一个特征 旨在由其他功能文件重用 通过使用共享范围 一个特征可以使用调用功能文件中定义的一些变量 例如国家 地区 我希望这些参数是可选的 但具有在中定义的默认值一个特征 为此 我使用三元条件逻辑 例如 de
  • Logback.xml配置

    我正在尝试将黑啤酒配置为保存到文件中 但是 它没有保存到文件中 您知道为什么吗 另外 我希望日志文件名可以在 logback xml 中配置 像 LOG FILE NAME 这样的东西将来自 cmd 这可能吗 这是我的 logback xm
  • 在 Git 中使用 trile

    我想使用一个简单的 git pull 来限制trickle http monkey org marius trickle trickle 1 txt 这看起来应该很容易 trickle d 100 git pull 但是当 git 显示其带
  • 有没有办法使用带有默认字段和 __slots__ 的数据类

    我想把 slots 在具有默认字段的数据类上 当我尝试这样做时 我收到此错误 gt gt gt dataclass class C slots x y x int y int 1 Traceback most recent call las
  • 将对象数组转换为新数组及其子数组

    我有一个像这样的数组 var data name Movies info category name content name Interstellar info category data name Dark Knight info ca