uni-app:对数组对象进行以具体某一项的分类处理

 一、原始数据

这里定义为五个数组,种类product有aaa,bbb两种

原始数据在data中进行定义

res: {"success": true,"devices": [{no: 0,product: 'aaa',alias: "设备1",assign: [["a1", "a2", "a3"],["a11", "a22", "a33"],["a111", "a222", "a333"]]},{no: 1,product: 'bbb',alias: "设备2",assign: [["b1", "b2", "b3"],["b11", "b22", "b33"],["b111", "b222", "b333"],["b1111", "b2222", "b3333"]]},{no: 2,product: 'aaa',alias: "设备3",assign: [["a1", "a2", "a3"],["a111", "a222", "a333"],["a11", "b22", "c33"]]},{no: 3,product: 'aaa',alias: "设备4",assign: [["a11", "b22", "c33"],["a1", "a2", "a3"],["a111", "a222", "a333"]]},{no: 4,product: 'bbb',alias: "设备5",assign: [["b111", "b222", "b333"],["b1", "b2", "b3"],["b11", "b22", "b33"],["b1111", "b2222", "b3333"]]},]
},

二、分类处理数据

注:使用了数组的 reduce() 方法来对 devices 数组进行循环遍历,并根据每个设备对象中的 product 值将其分类到一个以 product 为名称的数组中。

  • reduce() 方法接收一个回调函数和一个初始值作为参数。在这里,初始值是一个空对象 {}

  • 回调函数有两个参数:累加器(acc)和当前迭代的元素(device)。

  • 在每次迭代中,获取当前设备对象的 product 值并保存在变量 product 中。

  • 接下来,通过检查累加器对象 acc 中是否存在以 product 值为名称的属性,来判断是否已经有与该 product 对应的数组。

  • 如果不存在,则创建一个新的空数组,并将其添加为累加器对象 acc 的属性之一,使用 product 值作为属性名。

  • 然后,将当前的设备对象 device 添加到对应的 product 数组中,使用 push() 方法将设备对象推入数组中。

  • 最后,在每次迭代结束时,返回累加器对象 acc,以便在下一次迭代中使用。

  • 当所有元素都被迭代完毕后,reduce() 方法将返回最终累加器对象 acc,其中包含了以 product 值为名称的数组。

//根据product的名称进行分类处理
const devices = this.res.devices;
const result = devices.reduce((acc, device) => {const product = device.product;			// 检查结果中是否已存在相同 product 的数组,如果不存在则创建一个新数组if (!acc[product]) {acc[product] = [];}			// 将当前设备对象添加到对应的 product 数组中acc[product].push(device);			return acc;
}, {});		

 

三、完整代码

<template><view></view>
</template>
<script>export default {data() {return {res: {"success": true,"devices": [{no: 0,product: 'aaa',alias: "设备1",assign: [["a1", "a2", "a3"],["a11", "a22", "a33"],["a111", "a222", "a333"]]},{no: 1,product: 'bbb',alias: "设备2",assign: [["b1", "b2", "b3"],["b11", "b22", "b33"],["b111", "b222", "b333"],["b1111", "b2222", "b3333"]]},{no: 2,product: 'aaa',alias: "设备3",assign: [["a1", "a2", "a3"],["a111", "a222", "a333"],["a11", "b22", "c33"]]},{no: 3,product: 'aaa',alias: "设备4",assign: [["a11", "b22", "c33"],["a1", "a2", "a3"],["a111", "a222", "a333"]]},{no: 4,product: 'bbb',alias: "设备5",assign: [["b111", "b222", "b333"],["b1", "b2", "b3"],["b11", "b22", "b33"],["b1111", "b2222", "b3333"]]},]},}},methods: {},onLoad() {console.log('初始数据')console.log(this.res.devices)//根据product的名称进行分类处理const devices = this.res.devices;const result = devices.reduce((acc, device) => {const product = device.product;			// 检查结果中是否已存在相同 product 的数组,如果不存在则创建一个新数组if (!acc[product]) {acc[product] = [];}			// 将当前设备对象添加到对应的 product 数组中acc[product].push(device);			return acc;}, {});		console.log('分类后的数据')console.log(result);}};
</script>
<style></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/144583.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24-数据结构-内部排序-基数排序

基数排序 基数排序&#xff0c;给关键字分成d位&#xff08;组&#xff09;&#xff0c;&#xff0c;对每一位的情况&#xff0c;可能会出现的值位r&#xff08;基数&#xff09;个&#xff0c;然后分成r个队列&#xff0c;对每个对林进行分配耗时O(n)&#xff0c;最后按照改位…

行业追踪,2023-10-20

自动复盘 2023-10-20 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…

基于Java的旅游网站系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

在没有康托尔对角化方法的情况下证明实数的不可数性

乔治康托尔 |图片来源&#xff1a; 维基百科 一、说明 对于那些对数学感兴趣的人来说&#xff0c;无穷大实际上可以有不同的大小&#xff0c;这可能是一个众所周知的事实。事实上&#xff0c;最著名的例子是所有实数的集合比所有自然数的集合“大”。你可能知道&#xff0c;这实…

自然语言处理---注意力机制

注意力概念 观察事物时&#xff0c;之所以能够快速判断一种事物(当然允许判断是错误的)&#xff0c;是因为大脑能够很快把注意力放在事物最具有辨识度的部分从而作出判断&#xff0c;而并非是从头到尾的观察一遍事物后&#xff0c;才能有判断结果。正是基于这样的理论&#xf…

第十六届中国智慧城市大会 | 国产化三维重建技术服务智慧城市建设

2023年10月13日&#xff0c;由武汉大势智慧科技有限公司、飞燕航空遥感技术有限公司主办的第十六届智慧城市大会-实景三维技术创新与应用论坛在广州成功举办。 来自实景三维、自然资源、数字孪生、AI大数据、航空遥感等多个领域的专家&#xff0c;深度分享各自的智慧城市建设经…

AirPods Pro的降噪功能让你体验更好,那么如何打开这个功能

本文介绍了如何在AirPods Pro上使用降噪功能&#xff0c;如何关闭它&#xff0c;以及该功能的工作原理。 AirPods Pro和AirPods Max支持降噪。你的设备必须运行iOS 13.2或iPadOS 13.2或更高版本才能使用降噪。 如何在AirPods Pro上打开降噪功能 AirPods Pro凭借其噪音控制功…

SOLIDWORKS 2024新功能 3D CAD三维机械设计10大新功能

SOLIDWORKS 2024新增功能 - 3D CAD三维机械设计 10大新增功能 1. 先前版本的兼容性 •利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 •可将零件、装配体和工程图保存为最新版本…

阿里云ECS服务器的搭建学习

云服务器ECS&#xff1a; 云服务器&#xff08;Elastic Compute Service&#xff0c;简称ECS&#xff09;是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS&#xff08;Infrastructure as a Service&#xff09;级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备&a…

推理引擎之模型压缩浅析

目录 前言1. 模型压缩架构和流程介绍2. 低比特量化原理2.1 量化基础介绍2.2 量化方法2.3 量化算法原理2.4 讨论 3. 感知量化训练QAT原理3.1 QAT原理3.2 量化算子插入3.3 QAT训练流程3.4 QAT衍生研究3.5 讨论 4. 训练后量化PTQ4.1 动态PTQ4.2 静态PTQ4.3 KL散度实现静态PTQ4.4 量…

npm publish发布到在线仓库时,提示:Scope not found

当npm publish发布时&#xff0c;控制台提示&#xff1a;Scope not found&#xff0c;具体错误信息如下&#xff1a; npm notice npm ERR! code E404 npm ERR! 404 Not Found - PUT https://registry.npmjs.org/xxx%2fxxx - Scope not found npm ERR! 404 npm ERR! 404 xxx/xx…