当前位置: 首页 > news >正文

Vue 比较两个数组对象,页面展示差异数据值

需求:

页面要展示出被删除和添加的数据,知道哪些被删除和新添加的数据!如下图:

实现:

Vue 中使用 Lodash 的 differenceBy 函数可以方便地比较两个数组并找出它们的差异。

安装和引入Lodash

首先,你需要在项目中安装Lodash库。可以通过npm进行安装:

npm i --save lodash

然后,在需要使用differenceBy函数的组件中引入Lodash:

import _ from 'lodash';
使用differenceBy函数

differenceBy函数用于找出第一个数组中存在而第二个数组中不存在的元素。其基本语法如下:

_.differenceBy(array, [arrays], [iteratee])
  • array:要检查其元素的数组。
  • [arrays]:(可选)一个或多个数组。
  • [iteratee]:(可选)每次调用返回一个用于比较的值。

示例代码

假设有两个数组beforeCitiesafterCities,你想找出beforeCities中有而afterCities中没有的元素:

import _ from 'lodash';const beforeCities: [{value: 'Beijing',label: '北京'}, {value: 'Shanghai',label: '上海'}, {value: 'Nanjing',label: '南京'}],const afterCities: [{value: 'Beijing',label: '北京'}, {value: 'Nanjing',label: '南京'}, {value: 'Chengdu',label: '成都'}, {value: 'Shenzhen',label: '深圳'}, {value: 'Guangzhou',label: '广州'}],const result = _.differenceBy(beforeCities, afterCities, 'value');
console.log(result); // 输出: [{value: 'Shanghai',label: '上海'}]

 进阶:

进一步封装函数,分别得到删除和添加的数据

<div class="box-left"><h1>城市(选择前)</h1><d-table :data="beforeData"></d-table></div><div class="box-warp"><div class="box-top"><h1>被删除的城市</h1><d-table :data="initData .del"></d-table></div><div class="box-bottom"><h1>新增加的城市</h1><d-table :data="initData .add"></d-table></div></div><div class="box-right"><h1>城市(选择后)</h1><d-table :data="afterData"></d-table></div>initData : {add:[], del:[]}import { Dtable} from '@/components/Dtable'created() {this.initData = this.handList(this.beforeData, this.afterData)},methods: {handList(arr1, arr2) {var del= _.differenceBy(this.setJson(arr1), this.setJson(arr2), 'json')var add = _.differenceBy(this.setJson(arr2), this.setJson(arr1), 'json')return {add,del,}},setJson(arr) {arr.forEach(i => {i.json = JSON.stringify(i)});return arr;}}

http://www.lryc.cn/news/572755.html

相关文章:

  • AS32A601与ASM1042芯片在电力系统自动化监控中的应用效能分析
  • PROFIBUS DP 转 EtherCAT 网关:冶金自动化高效协同的基石
  • TypeScript 自定义类型
  • MySQL DATETIME类型存储空间详解:从8字节到5字节的演变
  • Kotlin 中ArrayList、listOf、arrayListOf 和 mutableListOf区别
  • Nginx+Tomcat负载均衡群集
  • 【FineDance】Batch Size对训练的影响分析
  • 20250620-Pandas.cut
  • aws(学习笔记第四十五课) route53-failover
  • 资本赋能鈤励科技,建筑数字化项目引领行业变革新趋势
  • Docker 容器技术入门与环境部署
  • MATLAB基于可拓云模型的公路路面性能评价模型
  • 基于大模型的三叉神经痛预测及治疗方案研究报告
  • Postgresql 表结构、列名相关信息查询
  • Unix、Linux、POSIX、Minix 区别与联系
  • 小菜狗的云计算之旅,shell脚本语言的基本内容和用法
  • wireshark过滤显示rtmp协议
  • 服务器获取外网IP,并发送到钉钉
  • 力扣-136.只出现一次的数字
  • 【MATLAB代码】制导方法介绍与例程——追踪法,适用于二维平面,目标是移动的|附完整源代码
  • java项目打包成jar包,并给jmeter使用
  • Lora训练
  • Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理
  • 一生一芯 PA2 RTFSC
  • Nginx-Ingress-Controller自定义端口实现TCP/UDP转发
  • js 生成过控制点的曲线
  • 数据库part2---子查询
  • 学习笔记丨AR≠VR:透视沉浸式技术的“虚实象限”法则
  • JuiceFS 集群部署详细指南:使用 SeaweedFS 作为数据存储,ETCD 作为元数据存储
  • Redis如何解决缓存击穿,缓存雪崩,缓存穿透