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

这篇具有很好参考价值的文章主要介绍了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"]

			]
		},
	]
},

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

二、分类处理数据

注:使用了数组的 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;
}, {});		

uni-app:对数组对象进行以具体某一项的分类处理,uni-app,uni-app 文章来源地址https://www.toymoban.com/news/detail-723949.html

三、完整代码

<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>

到了这里,关于uni-app:对数组对象进行以具体某一项的分类处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uni-app——使用uni.navigateTo传递对象参数

    文章目录 一、 传递一般参数 二、 传递对象参数 1. 传递参数 2. 接收参数 navigateTo进行页面传递参数,在下一个页面接收数据,一般在在onLoad钩子函数中获取

    2024年02月13日
    浏览(59)
  • uni-app开发微信小程序,wx.getPrivacySetting,wx.openPrivacyContract,wx.onNeedPrivacyAuthorization,隐私弹窗使用具体代码

     弹窗 代码插件已集成,即插即用, 五分钟集成进项目, 免费下载 ,欢迎大家交流  微信小程序用户隐私保护协议弹窗插件下载 首先完成组件的界面,创建一个组件文件夹 component ,然后创建一个 privacy 子文件夹,再创建一个 privacy 组件,组件是一个 全屏蒙版 加居中弹窗,弹窗

    2024年02月09日
    浏览(65)
  • uni-app返回上一个页面并进行页面刷新

    适用两个不同的页面跳转,返回上一个页面保存并刷新修改后的数据(也解决了uni-app的navigateBack返回不刷新的方法之一) 当前页: 上一页: 思路: 1、用getCurrentPages()获取打开的页面 2、保存当前页面和上一个页面 提示:不确定是不是从当前页跳转到上一页就console.log(pages[pa

    2024年02月12日
    浏览(55)
  • uni-app通过wifi连接设备并进行命令交互

    前段时间公司让做一个通过手机连接硬件设备上的wifi,实现手机app和硬件设备的数据通讯。当时做的时候查相关资料比较少,担心以后遇到相似需求忘记具体细节,在这写一下记录一下。 一、具体情况 1. 手机连接设备wifi功能没有通过app重新开发,需要手动连接wifi。 2. 采用

    2024年02月12日
    浏览(54)
  • uni-app 使用uCharts-进行图表展示(折线图带单位)

    前言 在uni-app经常是需要进行数据展示,针对这个情况也是有人开发好了第三方包,来兼容不同平台展示 uCharts和pc端的Echarts使用差不多,甚至会感觉在uni-app使用uCharts更轻便,更舒服 但是这个第三方包有优点就会有缺点,还会有坑的地方下面我会一一讲解 uCharts使用-注意事项

    2024年02月09日
    浏览(47)
  • uni-app使用vue语法进行开发注意事项

    目录 uni-app 项目目录结构 生命周期 路由 路由跳转 页面栈 条件编译 文本渲染 样式渲染 条件渲染 遍历渲染 事件处理 事件修饰符 组件/标签 使用(类似)小程序 语法/结构 使用vue 具体项目目录如下: uni-app 支持如下应用生命周期函数: 函数名 说明 onLaunch 当 uni-app  初始化

    2024年02月13日
    浏览(50)
  • 在uni-app使用vue3进行store全局数据共享

    在uni-app中使用vue3进行store的全局数据共享,网上文章太杂了,记录一下自己写的一个最简单易懂的例子,以供自己后面需要用到时候可以最直观的知道到底怎么实现 在index.js中写入代码如下(示例): uni-app好像内置vuex,不需要额外下载,如果记错了的话就得先去下载好 代

    2024年02月09日
    浏览(85)
  • 关于uni-app中uni-forms表单验证时“多级结构对象数据”如何做数据校验的解决方案

    这几天在做uni-app表单验证时遇到了一个问题,按官方文档给出的方法,当需要数据校验时,只需要 1.为uni-forms中的\\\" modelValue \\\"数据设置“ :rules ”对应 2.“ uni-forms-item ”的name和“ uni-easyinput ”中“v-model”中的key和“ rules ”中的key相同 就可以对该项“uni-easyinput”做数据校验

    2023年04月09日
    浏览(130)
  • uni-app---- 点击按钮拨打电话功能&&点击按钮调用高德地图进行导航的功能【安卓app端】

    先上效果图: 1. 在封装方法的文件夹下新建一个js文件,然后把这些功能进行封装 2.在需要的页面中进行调用 注意点: 1. 拨打电话需要进行app权限配置,设置完成后可以在正式版看到效果。(这几个最好都勾选上) 2. 配置高德地图的app模块设置,这里的appkey需要到高德地图

    2024年02月05日
    浏览(71)
  • 使用 v-for 指令和数组来实现在 Uni-app 中动态增减表单项并渲染多个数据

    在 data 中定义一个数组,用于存储表单项的数据: 在模板中使用 v-for 指令渲染表单项: 在 methods 中定义添加和删除表单项的方法: 这样,每点击一次 “添加表单项” 按钮,就会新增一个表单项,并且你可以通过输入框的 v-model 来动态修改表单项的值。点击对应的 “删除”

    2024年02月10日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包