当前位置: 首页 > 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.lqws.cn/news/458551.html

相关文章:

  • 1.22Node.js 中操作 Redis
  • 党建赋能 医校协同|广州附医华南医院与湖南中医药高等专科学校签约携手共育英才
  • Unity3D仿星露谷物语开发67之创建新的NPC
  • HTTP Server
  • 基于RISV-V的矿业网关,支持矿鸿等国产系统
  • 树莓派倾斜传感器实验指导书
  • 为什么你的vue项目连接不到后端
  • Linux 内核同步管理全解:原理 + 实战 + 考点
  • 【服务器R环境架构】基于 micromamba下载 R 库包
  • 企业实践 | 银河麒麟KylinOS-V10(SP3)高级服务器操作系统基础安装指南
  • 无人机吊舱热成像伪彩模式设计分析
  • Hadoop 技术生态体系
  • 如何填写“appium inspector”内容?
  • RAG工程落地:处理文档中表格数据
  • “地标界爱马仕”再启:世酒中菜联袂陈汇堂共筑新会陈皮顶奢产业
  • @annotation:Spring AOP 的“精准定位器“
  • 【MySQL数据库 | 第八篇】DQL语句 - 基础/条件查询
  • 20250620在荣品的PRO-RK3566开发板的Android13系统的uboot阶段就拉高GPIO2C6【driver模式】
  • 分布式ID生成利器:Snowflake UUID原理解析与实践
  • Lua 事务双写、RedisGears 异步双写、零停机索引迁移与容量预估
  • 数据结构第八章(六)-置换选择排序和最佳归并树
  • qt集成openssl
  • 大白话说目标检测中的IOU(Intersection over Union)
  • 数据结构-顺序表-数值统计
  • 「Linux文件及目录管理」硬链接与软连接
  • 学习笔记丨AR≠VR:透视沉浸式技术的“虚实象限”法则
  • c++系列之特殊类的设计
  • 在 macOS 上部署 Akash Network 的完整 Shell 脚本解决方案
  • GM DC Monitor v2.0 卸载教程
  • macOS - 安装微软雅黑字体