仵航说 Vue用replace修改数组中对象的键值或者字段名 仵老大
仵航说 Vue用replace修改数组中对象的键值或者字段名 仵老大
1.介绍
先看图

今天在项目中遇到了一个问题,例如我现在需要传一些数据到后端,数组例如是
let arr = [
{"colId":"SPECIAL_DESCRIBE","colName","SPECIAL_DESCRIBE名称"},
{"colId":"CUS_NAME","colName","CUS_NAME名称"}
]
但是后端需要接收的数组是
let array = [
{"id":"SPECIAL_DESCRIBE","label","SPECIAL_DESCRIBE名称"},
{"id":"CUS_NAME","label","CUS_NAME名称"}
]
因为这些数据是从后台查询出来的,所以我想通过在后端修改sql语句,用SQL的AS起别名,但是我去后端查看发现后端用的mybatis-plus的官方方法,直接查询的数据库全部,然后返回给了前端,所以思来想去跑去问了经理,他告诉我用replace,但是我没有用过,他说js都可以用,别说vue了,我就紧赶慢赶的去搜索,最后总结了一些,
2.解决方案
假如只是单独的解决上面的问题你可以直接这样做
//前端现在的数组
let arr = [
{"colId":"SPECIAL_DESCRIBE","colName","SPECIAL_DESCRIBE名称"},
{"colId":"CUS_NAME","colName","CUS_NAME名称"}
]
//假如后端需要的数组名字叫 array 直接定义
let array = JSON.parse(JSON.stringify(arr).replace(/colId/g,"id").replace(/colName/g,"label"))
console.log(array)
//现在你去打印就会看出来名字已经变了
3.其他例子
期间我发现了很多好玩的,你写完会发现 replace中的 / /g代表的什么,还有没有其他的符号,我就去做了攻略
3.1例子1: / /(作用截取)
//首先定义一个变量
let name = "仵航全世界最牛"
//之后我们进行截取
let newName = name.replace(/仵航/,"仵老大")
//这个时候我们进行打印
console.log(newName)
//输出的内容就是
仵老大全世界最牛
3.2例子2:/ /g(全局替换)
//这个也就是上面用到的全局替换
let wuhang = "今天仵航说,天气真的很好,"
wuhang = wuhang + "适合跟仵航一起去爬山,"
wuhang = wuhang + "也适合跟仵航一起去游泳"
//然后进行全局替换
let wulaoda = wuhang.replace(/仵航/g,"仵老大")
//进行打印
console.log(wulaoda)
//输出结果就是
今天仵老大说,天气真的很好,适合跟仵老大一起去爬山,也适合跟仵老大一起去游泳
3.3例子3://i(保证替换的大写不会发生改变)
//首先定义一个变量
let wuhang = "wuhang说,你真是个java开发工程师哎"
//然后进行替换,并保证你替换的字母大小写不发生改变
let wulaoda = wuhang.replace(/wuhang/i,"WuHang").replace(/java/i,"Java")
//进行打印
console.log(wulaoda)
//输出结果就是
WuHang说,你真是个Java开发工程师哎
当然还有另外几种,但是用的不多,基本上这几种就可以解决大部分问题,
4.应用场景
接下来截图我项目中用到的代码,对以后的自己说加油
//点击预览弹出弹框
showTable(){
console.log(sessionStorage)
console.log("点击预览的时候",this.formatData.child1)
// let sessionStorageID=sessionStorage.getItem("customQuery9fa91cea-a0b8-4cf7-ad3a-9bf679f07a0d")
//把child1的数组遍历出来存到sessionStorage里
let child1 = JSON.parse(JSON.stringify(this.formatData.child1).replace(/,"id"/g,"paramtID").replace(/colId/g,"id").replace(/colName/g,"label").replace(/colEnName/g,"fieldEnName").replace(/colChEnName/g,"fieleChEnName").replace(/conditionName/g,"condition"))
console.log("child1",child1)
let child2 = JSON.parse(JSON.stringify(this.formatData.child2).replace(/,"id"/g,"paramtID").replace(/colId/g,"id").replace(/colName/g,"label").replace(/colEnName/g,"fieldEnName").replace(/colChEnName/g,"fieleChEnName").replace(/conditionName/g,"condition"))
console.log("child2",child2)
let child3 = JSON.parse(JSON.stringify(this.formatData.child3).replace(/,"id"/g,"paramtID").replace(/colId/g,"id").replace(/colName/g,"label").replace(/colEnName/g,"fieldEnName").replace(/colChEnName/g,"fieleChEnName").replace(/conditionName/g,"condition"))
console.log("child3",child3)
let child4 = JSON.parse(JSON.stringify(this.formatData.child4).replace(/,"id"/g,"paramtID").replace(/colId/g,"id").replace(/colName/g,"label").replace(/colEnName/g,"fieldEnName").replace(/colChEnName/g,"fieleChEnName").replace(/conditionName/g,"condition"))
console.log("child4",child4)
for(let i=0;i<child1.length;i++){
console.log("点击预览之后",child1[i])
sessionStorage.setItem(child1[i].id+1,JSON.stringify(child1[i]))
}
for(let i=0;i<child2.length;i++){
console.log("点击预览之后",child2[i])
sessionStorage.setItem(child2[i].id+2,JSON.stringify(child2[i]))
}
for(let i=0;i<child3.length;i++){
console.log("点击预览之后",child3[i])
sessionStorage.setItem(child3[i].id+3,JSON.stringify(child3[i]))
}
for(let i=0;i<child4.length;i++){
console.log("点击预览之后",child4[i])
sessionStorage.setItem(child4[i].id+4,JSON.stringify(child4[i]))
}
this.$http.post('/reporttools/sys-dataset/queryTable',sessionStorage).then(resp =>{
this.showTableData = resp.data
})
this.drawer = true;
},
本期关于replace的分享就到这里,码字不易,希望您点个赞再走
仵航说 Vue用replace修改数组中对象的键值或者字段名 仵老大的更多相关文章
- 修改数组中对象的key值
遇见场景:echart图表中后台返回我的数据,后台无法修改key值,但是echart渲染图表的时候,需要用 var m2R2Data= [ {value:335,name:"种类01 335 ...
- php usort 按照数组中的某个键值排序
//php usort 按照数组中的某个键值排序 如果第一个参数小于第二个参数 -> 返回小于0的整数如果第一个参数等于于第二个参数 -> 返回等于0的整数如果第一个参数大于于第二个参数 ...
- mongoose修改数组中某个特定的值
写博客的时候有一个这样的业务,一个标签集合和一个文章集合,它们是多对多的关系,文章集合中tags字段包含它对应的标签,现在修改标签集合中某条标签记录的名字,文章集合中所有包含这个标签的tags字段的值 ...
- vue prop不同数据类型(数组,对象..)设置默认值
vue prop 会接收不同的数据类型,这里列出了 常用的数据类型的设置默认值的写法,其中包含: Number, String, Boolean, Array, Function, Object ...
- js实现的对象数组根据对象的键值进行排序代码
有时候会遇到做展示数组的排序,由大到小和由小到大的切换: var arr=[{id:1,webName:"蚂蚁部落"},{id:2,webName:"网易"}] ...
- PHP 二维数组按某一个键值排序
一.前言 在某个项目中,需要读取某个文件夹下的所有文件,在本地的 Windows 环境下时,读取出来的二维数组的文件名称和在 Windows 文件夹的文件排序一致, 但是项目上线后,环境为 Linux ...
- Vue 改变数组中对象的属性不重新渲染View的解决方案
Vue 改变数组中对象的属性不重新渲染View的解决方案 在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个功能是响应系统-- 模型只是一个普通对象,修改对象则会更新视图.受到ja ...
- 微信小程序中如何使用setData修改数组或对象中的某一参数
本人也是刚开始接触微信小程序,在微信小程序中经常会遇到修改数组中某一项的值,比如array[0]或者是对象中object.item的值.这些值在微信小程序中都需要使用一个名为setData的方法,而这 ...
- PHP 修改数组中的值
PHP 修改数组中的值 ①.二维数组可以通过 for($i = 0; $i < count(Array()); ++ $i) 这种形式修改 实例代码: // 修改 二维数组中的 name为 Ge ...
随机推荐
- css3系列之linear-gradient() repeating-linear-gradient() 和 radial-gradient() repeating-radial-gradient()
linear-gradient() (线性渐变) repeating-linear-gradient() (重复的线性渐变) radial-gradient() (镜像渐变) repeatin ...
- Java基础教程——线程池
启动新线程,需要和操作系统进行交互,成本比较高. 使用线程池可以提高性能-- 线程池会提前创建大量的空闲线程,随时待命执行线程任务.在执行完了一个任务之后,线程会回到空闲状态,等待执行下一个任务.(这 ...
- spring bean注册和实例化
1.左边3个接口定义了基本的Ioc容器的2.HierarchicalBeanFactory增加了getParentBeanFactory()具备了双亲Ioc的管理能力3.ConfigurableBea ...
- day100:MoFang:用户模型类的创建&Marshmallow模块&使用基本构造器Schema完成数据的序列化转换和反序列化转换
目录 1.用户模型的创建 2.Marshmallow模块 3.MarshMallow基本构造器:Schema 1.基于Schema完成数据序列化转换 2.基于Schema完成数据反序列化转换 3.反序 ...
- 20200203_windows2012下安装mysql 5.7.29
一. 检查系统版本: 二. 下载mysql, 下载地址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads 三. 解压下载后的压 ...
- kafka 消费组功能验证以及消费者数据重复数据丢失问题说明 3
原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 背景 上一篇文章记录了kafka的副本机制和容错功能的说明,本篇则主要在上一篇文章的基础上 ...
- Core在IIS的热发布问题或者报错文件已在另一个程序中打开
关于Core发布到IIS的热发布问题,或者覆盖dll文件的时候会报错"文件已在另一个程序中打开",也就是无法覆盖程序的问题,经过百度和分析总结以下几种方案: 一.使用app_off ...
- PyQt(Python+Qt)学习随笔:model/view架构中的QStandardItemModel使用案例
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 1.案例说明 在应用中展示指定目录的图标文件的文件名和图标,界面就是一个简单的窗口上面放置一名为li ...
- Python+Qt学习随笔:PyQt图形界面应用的事件处理流程
图形界面的事件处理是界面操作的核心,经过编写测试程序验证,基本确认PyQt图形界面应用程序的事件处理流程如下: 1.操作系统或其他应用发送消息给应用主程序: 2.应用主程序调用notify将消息队列中 ...
- PyQt(Python+Qt)学习随笔:QAbstractScrollArea的viewPort(视口)理解
老猿Python博文目录 老猿Python博客地址 在学习Designer中ItemViews类部件时,这些部件都有个父类QAbstractScrollArea,该父类是Qt滚动区域的低级抽象.该区域 ...