通过对象数组中的ID字段将字段值收集到数组中

2023-12-08

我无法修改 JSON 文件。尝试使用我所有关于循环(map、filter)和条件(if、else)JavaScript 的知识。但什么也没有出来。请告诉我如何从此文件制作这样的文件

[{
    "model": "2002R \"Protection Pack - Mirage Grey",
    "img": "2002r-protection-pack-mirage-grey.jpg"
  },
  {
    "model": "2002R \"Protection Pack - Mirage Grey",
    "img": "2002r-protection-pack-mirage-grey-2.jpg"
  },
  {
    "model": "550 \"White Black",
    "img": "BB550HA1-2.jpg"
  },
  {
    "model": "550 \"White Black",
    "img": "BB550HA1-3.jpg"
  },]

应该是这样的

   [{
    "model": "2002R \"Protection Pack - Mirage Grey",
    "img": ["2002r-protection-pack-mirage-grey.jpg", "2002r-protection-pack-mirage-grey-2.jpg"]
  },
  {
    "model": "550 \"White Black",
    "img": ["BB550HA1-2.jpg","BB550HA1-3.jpg"]
  },
]

我试过这个。但没有正确的结果。

let modelsArray = [];
let prevModel = '';
let currentModel = '';
let pictureArray = [];
let counterModel = 0;

fs.readFile(path, 'utf-8', (err, data) => {
  if (err) console.log(err.message);

  try {
    const dataArr = JSON.parse(data);

    const newArr = dataArr.map((item, ind) => {
      currentModel = item.model;

      pictureArray.push(item['img']);

      if (modelsArray.length == 0) {
        modelsArray[counterModel] = { model: item.model };
        prevModel = currentModel;
      }

      if (prevModel !== item.model) {
        counterModel++;
        modelsArray[counterModel] = { model: item.model };
      }

      prevModel = currentModel;


      
    });

请给我建议


Array::reduce是从数组收集数据的一个不错的选择。这里我们有一个结果数组的累加器和一个映射,我们可以在其中轻松找到已添加的模型以向其中添加图像:

r.map.get(model)?.img.push(img)

如果找不到模型,请将其添加到数组和地图中:

r.map.set(model, r.arr[r.arr.length] = {model, img: [img]});
const models = [{
    "model": "2002R \"Protection Pack - Mirage Grey",
    "img": "2002r-protection-pack-mirage-grey.jpg",
    "brand": "test brand"
  },
  {
    "model": "2002R \"Protection Pack - Mirage Grey",
    "img": "2002r-protection-pack-mirage-grey-2.jpg"
  },
  {
    "model": "550 \"White Black",
    "img": "BB550HA1-2.jpg"
  },
  {
    "model": "550 \"White Black",
    "img": "BB550HA1-3.jpg"
  },];
  
const images = models.reduce((r, {model, img, ...props}) => {
  r.map.get(model)?.img.push(img) ?? 
  r.map.set(model, r.arr[r.arr.length] = {model, img: [img], ...props});
  return r;
}, {arr: [], map: new Map}).arr;

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

通过对象数组中的ID字段将字段值收集到数组中 的相关文章

  • 使用shinyjs通过javascript在闪亮的应用程序中操作现有的Leaflet地图

    我有一个闪亮的应用程序 其中包含现有的传单地图 我希望能够在渲染后使用自定义 javascript 通过shinyjs包裹 一个最小的例子如下 app R packages library dplyr library leaflet lib
  • 将字符串转换为变量名。 (JavaScript)

    我确实查看了前面的问题 但它们是针对整数值的 我需要文本值的答案 我在本周早些时候问了一个与此相关的问题 但现在是这样 如下所示 我使 Make x 等于某个字符串值 Acura Honda Toyota 当我将 Make x 传递到函数
  • 将文件和关联数据发布到 RESTful Web 服务(最好以 JSON 形式)

    在一个应用程序中 我正在开发 RESTful API 我们希望客户端以 JSON 形式发送数据 该应用程序的一部分要求客户端上传文件 通常是图像 以及有关图像的信息 我很难在单个请求中追踪这种情况是如何发生的 是否可以将文件数据 Base6
  • 为什么 JSON.stringify() 接受 Date 对象?

    至少在 Firefox 中 您可以对 Date 对象进行字符串化 gt gt gt JSON stringify now new Date now 2012 04 23T18 44 05 600Z 这是有效的 因为 在 Firefox 中
  • 赋予 d3 序数轴标签与尺度名称不同

    我有一个序数scale具有不同值的某些标签 我想显示该比例的轴 其中轴标签与比例标签不同 我有这个代码 var width 1000 var height 600 var margins left 100 40 right 25 botto
  • React.js this.props.data.map() 不是一个函数

    我正在搞乱反应并尝试解析和渲染 json 对象 现在 我只是使用硬编码对象设置它以进行测试 而不是从 ajax 调用中获取它
  • Javascript 根据字段值任意排序数组

    所以我有一个对象数组 如下所示 var myArray priority low priority critical priority high 我需要以这种方式排序 1 关键 2 高和3 低 如何才能做到这一点 我建议使用一个对象来存储排
  • Matlab:如何显示数组的“真实”值?

    我有一个在脚本中计算的向量 计算后 我将值显示到命令窗口 显示如下 finalResults 1 0e 05 0 0001 0 0 0005 0 0002 0 0001 0 0027 0 0033 0 0001 0 0000 0 0000
  • shell 脚本中数组的最大元素及其索引

    如何在 shell 脚本中从数组中找到最大元素及其索引 我有一个数组 a 2 2116565098 2 1238242060 2 1747941240 2 3201010162 2 3677779871 1 8126464132 2 124
  • 从 UnityWebGL jslib 返回字符串

    我想使用 jslib 来获取网址参数 像这样的代码 jslib GetUrl function var s var strUrl window location search var getSearch strUrl split var g
  • 传单 - 导入 Geojson - Angular 6

    我尝试将 GeoJson 文件导入到 Angular 的应用程序 6 中的传单中 通过这个解决方案 我的 geojson 是在 leafletmap 中绘制的 但我有这个错误 我无法构建我的应用程序 有人知道一种解决方案吗 错误 TS234
  • jQuery live() 和ready() 之间的区别?

    两者之间的确切区别是什么live and ready 编辑 发现die http docs jquery com Events die是相反的live ready http docs jquery com Events ready让你注册一
  • Excel VBA 将范围值复制到数组,

    我有以下代码摘录 我试图将一系列值复制到声明的数组上 但它一直给我 无法分配给数组 错误 Dim permittedCurve 0 To 7000 As Variant permittedCurve activeWorkbook Works
  • Niceedit本地上传图片失败

    我是这样称呼编辑的 new nicEditor buttonList bold italic underline upload iconsPath img nicedit png uploadURI http server com inte
  • NodeJS 中的缩进多行日志记录

    我要打印JSON stringify d 反对控制台 将上下文作为 Mocha 测试套件输出的一部分 当测试缩进时 我希望对象日志行向右缩进足够远 例如 3 4 个制表符空格 以便它们可以识别地位于右侧describe group 我怎样才
  • 在Python中随机交错2个数组

    假设我有两个数组 a 1 2 3 4 b 5 6 7 8 9 我想将这两个数组交错为变量 c 注意 a 和 b 不一定具有相同的长度 但我不希望它们以确定性的方式交错 简而言之 仅仅压缩这两个数组是不够的 我不想要 c 1 5 2 6 3
  • 完整日历 - 向事件对象添加额外属性

    可能是由于我缺乏理解 但我使用 PHP 返回 JSON 字符串来带回事件数据
  • 在64位环境中加载32位进程

    我有以下几个问题 CHM 是 编译的 HTML 文件 我的 CHM 文件有一个启动 32 位应用程序的链接 CHM 文件是用 Javascript 编码的 这在 32 位操作系统环境中运行良好 但这在 64 位操作系统环境中不起作用 原因是
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 当 jQuery .remove() 用于删除脚本标签时,它是否会清除加载的 JavaScript?

    正如标题所示 如果我使用以下命令从 DOM 中删除脚本标签 scriptid remove javascript 本身是保留在内存中还是被清除了 或者 我完全误解了浏览器处理 javascript 的方式吗 这是很有可能的 对于那些对我提问

随机推荐

  • 将 Excel 文件保存为不带引号的 .txt 格式

    I have a excel sheet which has data in column A There are many special characters in the cells When I save the sheet in
  • 我在使用 asp.net MVC 4 时遇到一些编码问题,其中某些字符(如撇号)显示为“

    我基本上采用了某人制作的 html 文件并制作了一个新的 MVC 应用程序并将其放入视图中 但现在我遇到了撇号和其他字符的问题 如下所示 he s a cat 我正在比较在浏览器中打开磁盘上的原始 html 文件 并运行本地 IIS 中的
  • 无法在 macOS 上初始化 Cassandra

    我已在 macOS 10 14 上安装了 Cassandra 3 11 3 openjdk版本 11 2018 09 25 OpenJDK 运行时环境 18 9 内部版本 11 28 OpenJDK 64 位服务器 VM 18 9 构建 1
  • 使用 jQuery 将列表中的元素集包装在 DIV 中

    我有一个很长的名字列表 每个名字都将包含在span tags Example span Yang Zajicek span span Daniela Athey span span Alanna Bumpers span span Audr
  • 如何在可移植类库中使用MEF?

    我有针对 NET 4 5 和 Windows 应用商店应用程序的可移植类库 根据 MSDN 此设置应该提供 MEF但事实并非如此 命名空间System ComponentModel Composition不可用 我什至尝试过System C
  • 如何更正 NginX 反向代理配置中的 Meteor 基本 URL?

    我已经通过反向代理 在 Ubuntu 服务器上 在 NginX 后面安装了 Apache 和 Meteor Apache 直接映射为 baseURL www mydomain com Meteor 映射为子文件夹 www mydomain
  • 如何备份/恢复Firebird数据库?

    我对 Firebird v2 5 备份 恢复过程感到非常困惑 我应该使用什么来备份 恢复本地 Firebird 数据库 fbsvcmgr exe gbak exe isql exe or nbackup exe 这些都是选项还是我错了 对于
  • 更改生命周期映射中的默认 mojo 配置

    我正在编写一个 Maven 3 插件 它为另一个应用程序构建插件 插件基本上是一个带有一些奇特清单的 JAR 文件 编译后的类需要进行后处理 以便插件能够与主机应用程序的生产版本一起使用 不幸的是 该插件的处理版本无法与主机的调试版本一起使
  • java.lang.RuntimeException:找不到 FacesContext(JSF 1.2 + Primefaces + Tomcat 6)[重复]

    这个问题在这里已经有答案了 当尝试在 Tomcat 6 上运行我的项目时 我遇到了这个问题 SEVERE Servlet service for servlet jsp threw exception java lang RuntimeEx
  • 为什么垃圾收集器不收集任务对象

    特别是当没有活动线程引用它时 我认为 GC 会考虑所有 net 线程来查找引用 它也会检查其他地方的引用吗 编辑 例如 让我们假设我们在一个控制台应用程序中 main 调用一个创建本地task1 的方法 然后应用task1 Continue
  • 按值“名称”合并 2 个 CSV 并合并计数 (Powershell)

    所以目前我正在寻找一种合并 2 个 CSV 文件的方法 这是我的意思的一个例子 CSV1 Name Count Klaus 3 Hans 2 Gerhard 1 Nina 6 Julia 10 Caro 19 CSV2 Name Count
  • 从 Python 控制 Libreoffice Impress

    我正在编写一个面向演讲者和会议的应用程序 我用 Python 编写并专注于 Linux 我想知道是否可以在 Linux 下使用 Python 以某种方式控制 LibreOffice Impress 我想从我的 Python 应用程序启动一个
  • iBeacon每1分钟不断进入和退出区域

    当 iBeacon 使用 Kontakt Beacon 在后台模式下进入某个区域时 我设法获得本地通知 同时 我监控 3 个具有特定且唯一标识符的信标区域 每个区域具有相同的 UUID 但具有唯一的主要和次要组合 在锁屏模式下 我的应用程序
  • C# 文本框显示以前写的文本

    例如 如果您访问 Facebook 并双击登录文本框 则会出现一些以前有人写过的登录信息 有什么方法可以在 C 文本框中生成以前输入的下拉菜单吗 我不想要组合框 See the 文本框 自动完成模式 and 文本框 自动完成源文本框的属性
  • PHP不会显示任何错误

    这是我的代码 echo foo error reporting E ALL echo this line doesnt end in a semi colon echo i should get an error here 当我运行这个时
  • PDF - Adob​​e 数字版

    我想使用 Adob e Digital Edition 保护 pdf 文档 我认为它目前被用来保护电子书以防止非法流通 任何人都可以对此有所了解吗 是否可以使用 C 或其他东西来做到这一点 您可能想看看Adobe 内容服务器和Adobe数字
  • 原子最大+原子CAS(atomicExch)

    我想问一下大家是否有更好的方法来组合2个原子 我的目标是在 J 个参数值列表 非常类似于 2 路输入 下找到一组 K 个方程 超过 32 个 的最高结果 并保存该值和 j 索引 if atomicMax max k id t max lt
  • 在 SQL Server 中禁用打印

    我有一个包含许多调试消息的脚本 这些消息由PRINT功能 有什么办法可以禁用该消息吗 我想到了类似的事情SET NOCOUNT ON 但用于用户消息 我喜欢在我的脚本 SP 中设置一个变量 Debug tinyint 默认 将其设置为 0
  • Android 如何以编程方式打开请勿打扰(dnd)

    如何在 Android 中以编程方式打开 关闭 请勿打扰 dnd 我希望这能给我一些东西 但事实并非如此 Settings System putInt getContentResolver Settings System DO NOT DI
  • 通过对象数组中的ID字段将字段值收集到数组中

    我无法修改 JSON 文件 尝试使用我所有关于循环 map filter 和条件 if else JavaScript 的知识 但什么也没有出来 请告诉我如何从此文件制作这样的文件 model 2002R Protection Pack M