如何按给定数量复制数组中的对象,ES6 及更高版本

2024-01-21

我正在尝试转换一个对象数组,如果对象属性数量大于 1,我将返回重复的对象。

const objects = [
  { id: 1, name: "Scissor", price: 2, quantity: 3 },
  { id: 2, name: "Hat", price: 6.5, quantity: 1 },
  { id: 3, name: "Socks", price: 0.5, quantity: 5 },
];


// desired return
[
  { id: 1, name: "Scissor", price: 2 }
  { id: 1, name: "Scissor", price: 2 }
  { id: 1, name: "Scissor", price: 2 }
  { id: 2, name: "Hat", price: 6.5}
  { id: 3, name: "Socks", price: 0.5 }
  { id: 3, name: "Socks", price: 0.5 }
  { id: 3, name: "Socks", price: 0.5 }
  { id: 3, name: "Socks", price: 0.5 }
  { id: 3, name: "Socks", price: 0.5 }
]

My code:

const objects = [
  { id: 1, name: "Scissor", price: 2, quantity: 3 },
  { id: 2, name: "Hat", price: 6.5, quantity: 1 },
  { id: 3, name: "Socks", price: 0.5, quantity: 5 },
];

let newObjects= [];

Object.entries(objects).forEach(([key, value]) => {

    for (let i=0; i < value.quantity; i++){
        newObjects.push({ id: value.id, name: value.name, price: value.price})
    }

});
console.log(newObjects);

所以我上面的代码确实有效,确实返回了我想要的东西,但是我觉得有更好/更流畅和更多的 ES6 及更高版本的方法。有人可以建议更好的方法吗?


你可以使用.fill() and .flatMap().

const objects = [
  { id: 1, name: "Scissor", price: 2, quantity: 3 },
  { id: 2, name: "Hat", price: 6.5, quantity: 1 },
  { id: 3, name: "Socks", price: 0.5, quantity: 5 },
];
let newObjects = objects.flatMap(e=>
  Array(e.quantity).fill({id: e.id, name: e.name, price: e.price})
);
console.log(newObjects);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何按给定数量复制数组中的对象,ES6 及更高版本 的相关文章

随机推荐

  • 德尔福和 i18n

    Delphi 是否以任何方式支持国际化 我已经看到我可以为项目添加不同的语言 但这似乎会创建 dfm 文件的多个实例 因此 语言不能在运行时更改 我说得对吗 您如何处理国际化 如果您这样做 有没有最佳实践 Delphi 附带了一些工具来执行
  • jQuery 发布请求(不是 AJAX)

    在 ASP NET MVC 应用程序中 我使用 jQuery 在按钮单击时发布数据
  • 当弹出窗口打开时禁用后台的所有内容

    我正在开发一个基于 HTML JQuery 和 CSS 的网页 我想在其中使用简单的 div 标签打开弹出窗口 我想在弹出窗口打开时禁用后台的所有内容 这意味着虽然弹出 div 对用户可见 但他或她不应该能够单击网页上的任何其他内容 弹出窗
  • 画布中的鼠标偏移 [fabric.js]

    我已经阅读了 3 5 个关于鼠标偏移的主题 但我仍然不明白哪里混乱了 就我而言 60 时一切正常 另外40 的鼠标是偏移的 有时对象位置与鼠标行为无关 IE 和 Chrome 是最混乱的 我尝试编辑样式表和父 div 但没有任何结果 最糟糕
  • 对象没有 hasOwnProperty 方法(即未定义)- IE8

    这看起来很奇怪 这是我在IE8控制台中的实验 typeof obj1 object obj1 hasOwnProperty typeof obj2 object obj2 hasOwnProperty undefined 关于什么可能导致这
  • 向 App Store 提交 iPhone 应用程序的流程? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否需要先支付 99 美元才能观看视频以向 App Store 提交 iPhone 应用程序 还是可以在任何地方免费获得 您可以加入开发者计划并免费观
  • Python正则表达式在集合内匹配

    测试时http gskinner com RegExr http gskinner com RegExr 在线正则表达式测试器 正则表达式 jpg bmp 当 jpg 或 bmp 存在时返回结果 但是 当我在 python 中运行此正则表达
  • SSRS 2005 缺少 Microsoft.ReportingServices.Interfaces.dll

    我在 c program files SQL Server 90 Tools Binn 中缺少此 DLL 引用 我假设这是因为我没有安装 2005 客户端 我安装了 2005 年的所有服务 数据库实例 报告服务实例 SSAS 和 SSIS
  • 持续更新文件

    最终 我需要将 Spotify API 中的信息提供给应用程序 以显示 当前歌曲 信息 包括提示时间 因此需要不断轮询 API 并更新应用程序轮询的数据源 我仍在尝试从流而不是文件的角度来思考数据 所以我想出了这个小实验来了解如何不断更新文
  • PM2 - 语法错误:严格模式之外尚不支持块范围声明

    我目前正在 Ubuntu 服务器上安装 NodeJS 服务 该应用程序是用 CoffeeScript 编写的 并且可以自行运行良好 这就是我设置项目的方式 cd test project nvm use v4 9 1 npm install
  • Zeroinfl“系统在计算上是奇异的”,而预测变量没有相关性

    我正在尝试对一年中工人缺勤天数的计数数据 因变量 进行建模 我有一组预测变量 包括有关工人 有关他们的工作等的信息 其中大多数是分类变量 因此 需要估计大量系数 83 但由于我有超过 600 000 行 我认为这应该不会有问题 此外 我的数
  • 当你调用一个包含yield的函数时会发生什么?

    I read here https stackoverflow com questions 19302530 python generator send function purpose 60042174 noredirect 1 comm
  • 如何创建支持 Ruby 的 shell 命令?

    我正在创建一个 gem 我希望能够在其中使用 shell 命令来执行 gem 中的功能 在更简单的上下文中 我需要创建一个 shell 脚本 该脚本在触发 shell 命令时执行带有选项的 Ruby 函数 做到这一点最简单的方法是什么 例如
  • std::tuple 和标准布局

    如果所有成员std tuple are of 标准布局类型 https stackoverflow com a 7189821 734069 就是它std tuple本身标准布局 用户定义的复制构造函数的存在使其变得不平凡 但我想知道它是否
  • 如何显示wordpress页面内容?

    我知道这真的很简单 但由于某种原因我没有想到 而且谷歌今天也没有帮助我 我想输出页面内容 该怎么做 我以为是这样的 Marc B 感谢您的评论 帮助我发现了这一点 p Sorry no posts matched your criteria
  • 是否可以扁平化 MongoDB 结果查询?

    我的 MongoDB 集合中有一个深度嵌套的集合 当我运行以下查询时 db countries findOne data country neighbor name 1 id 0 我最终在这里得到这个嵌套结果 data country ne
  • 使用 ImageMagick 打开随机 jpeg 的 Shell 脚本

    我有一大堆 jpeg 我想编写一个 shell 脚本 随机选择 5 个图像 然后使用 imageMagick 将它们放入蒙太奇中 然后打开这个蒙太奇文件 我希望这个过程每 10 秒发生一次 我试过这个脚本 for f in jpg do s
  • Windows上构建的PyQt:DLL加载失败:找不到指定的过程

    我尝试在 Windows 7x64 上从源代码 下载了二进制 Qt 5 8 0 构建 PyQt 我通过本教程做到了 https stackoverflow com a 40779370 2726900 https stackoverflow
  • 错误:条目中的空值:incrementalFolder=null

    我在 gradle 构建中遇到以下错误 错误 条目中的空值 incrementalFolder null 我怎样才能解决这个问题 我同意马拉维略 辛加的回答 这似乎是 gradle 中的一个错误 我找到了另一个解决方案here https
  • 如何按给定数量复制数组中的对象,ES6 及更高版本

    我正在尝试转换一个对象数组 如果对象属性数量大于 1 我将返回重复的对象 const objects id 1 name Scissor price 2 quantity 3 id 2 name Hat price 6 5 quantity