如何按给定数量复制数组中的对象,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 及更高版本 的相关文章

  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 如何格式化 Highcharts 的 (x,y) 对数据的日期时间

    我的序列化方法会产生如下所示的日期时间字符串 2014 07 09T12 30 41Z 为什么下面的代码不起作用 function container highcharts xAxis type datetime series data x
  • 图像无法在带有 DOM 的 IE 中加载:控制台中的 7009 错误(无法解码)

    当在 IE 中的单个页面上加载许多图像时 在 IE11 中重现 其中一些图像开始加载失败 并在控制台中出现类似以下警告的内容 DOM7009 无法解码 URL 处的图像 某些唯一的 url 当我查看网络流量时 似乎确实从服务器收到了每个图像
  • 可以在初始 DOM 解析期间/之前修改 DOM 吗?

    是否可以在初始 DOM 解析期间或之前修改 DOM 或者我是否必须等到 DOM 被解析和构建之后才能与其交互 更具体地说 是否有可能阻止 DOM 中的脚本元素使用用户脚本 内容脚本或 Chrome 或 Firefox 中的类似脚本运行 在解
  • Bootstrap按钮加载+Ajax

    我正在使用 Twitter Bootstrap 的按钮加载状态 http twitter github com bootstrap javascript html buttons http twitter github com bootst
  • 有没有办法使用 Rspec/Capybara/Selenium 将 javascript console.errors 打印到终端?

    当我运行 rspec 时 是否可以让 capybara selenium 向 rspec 报告任何 javascript console errors 和其他异常 我有一大堆测试失败 但当我手动测试它时 我的应用程序正在运行 如果不知道仅在
  • 如何纠正流警告:解构(缺少注释)

    我正在编写一个小型 React Native 应用程序 并且正在尝试使用 Flow 但我无法在任何地方真正获得有关它的正确教程 我不断收到错误 destructuring Missing annotation 有关 station 这段代码
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 在 HTML5 画布中,如何用我选择的背景遮盖图像?

    我试图用画布来实现这一点 globalCompositeOperation 但没有运气 所以我在这里问 这里有类似的问题 但我没有在其中找到我的案例 我的画布区域中有图层 从下到上的绘制顺序 画布底座填充纯白色 fff 用fillRect
  • window.location 和 location.href 之间的区别

    我对之间的区别感到困惑window location and location href 两者似乎都以相同的方式行事 有什么不同 window location是一个对象 它保存有关当前文档位置的所有信息 主机 href 端口 协议等 lo
  • 为什么我们在打字稿中使用 HTMLInputElement ?

    我们为什么使用 document getElementById ipv as HTMLInputElement value 代替 document getElementById ipv value 功能getElementById返回具有类
  • 将 UMD Javascript 模块导入浏览器

    你好 我正在对 RxJS 进行一些研究 我可以通过在浏览器中引用它来使用该库 如下所示 它使用全局对象命名空间变量 Rx 导入 我可以制作可观察的东西并做所有有趣的事情 当我将 src 更改为指向最新的 UMD 文件时 一切都会崩溃 如下所
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有
  • 使用 Vue 的多模式组件

    我在 Vue 中实现动态模式组件时遇到问题 A common approach I follow to display a set of data fetched from the db is I dump each of the rows
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 如何在react-highcharts中使用图表工具提示格式化程序?

    如何使用图表工具提示格式化程序 我正在使用高图表的反应包装器 我有这样的配置 const CHART CONFIG tooltip formatter tooltip gt var s b this x b each this points

随机推荐

  • 德尔福和 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