当前位置:网站首页 > 技术经理的晋升之路 > 正文

数组中添加对象 & 通过递归数组,给数组中的对象添加新字段 & $set给对象添加新属性 & 遍历唯一ID标识-随机数或时间戳

数组中添加对象 & 通过递归数组,给数组中的对象添加新字段 & $set给对象添加新属性 & 遍历唯一ID标识-随机数或时间戳

1、空数组中添加对象
 var cardNumArr = []; //定义一个空的数组 var cardNumObj = { 
   }; //定义一个空的对象 cardNumObj = { 
    name: '李白', id: 1 }; cardNumArr.push(cardNumObj); console.log(cardNumArr); 

效果

在这里插入图片描述

2、js高效修改对象数组里的对象属性名

有些时候,我们前端从后端拿过来的JSON对象数据,某些字段并不是前端想要的,需要对一些字段名进行重命名。一般修改对象数组的对象属性名:

JSON.parse(JSON.stringify(data).replace(/name/g, 'new_name')) //data为数组,name为修改前,new_name为修改后 

解释:

1)JSON.stringify()把json对象转成json字符串;

2)使用正则的replace()方法替换属性名;

3)JSON.parse()把json字符串又转成json对象。

修改多个属性:当要修改多个属性名时,多次调用replace方法,可以链式调用。如下面说明

JSON.parse(JSON.stringify(data).replace(/name1/g, 'new_name1').replace(/name2/g, 'new_name2').replace(/name3/g, 'new_name3')...) 
附:
JSON.parse和JSON.stringify方法详解

1、JSON.parse(“要转换的数据”)

2、JSON.stringify(“要转化的数据”)

3、首先,两个方法的用法是有差别的:

①.JSON.stringify是从一个对象中解析出字符串

②.JSON.parse是从一个字符串中解析出json(键值对)

4、所以在使用的时候如果参数不对应,就不能正确转换:

一.JSON.parse()【从一个字符串中解析出json对象】

例子:

1.定义一个字符串,var data=’{“name”:“goatling”}’

2.解析对象,JSON.parse(data)

3.结果是:

name:“goatling”

二.JSON.stringify()【从一个对象中解析出字符串】

1.var data={name:‘goatling’}

2.JSON.stringify(data)

3.结果是:

‘{“name”:“goatling”}’

实例-给数组对象修改属性名
var arr = [{ 
    "courseName": "英语", "code": "english" }, { 
    "courseName": "药物化学", "code": "yw" } ]; console.log(arr) arr = JSON.stringify(arr).replace(/courseName/g, "title").replace(/code/g, "name"); console.log(arr) var b = JSON.parse(arr); console.log(b) 

显示效果

在这里插入图片描述

3、$set给对象添加新属性

类似——Vue.set(object, key, value) 方法将响应属性添加到嵌套的对象上

this.$set(el,"myID",myID) 

“myID”——key,对象属性名

myID——value,属性值

动态生成随机数——避免v-for或forEach等循环时,出现重复:key=index,出现控制台标红
// 1、随机数——优选 let myID = Math.random().tostring(36).substr(2); // 2、时间戳——遍历太快,会出现时间戳一样的情况 let myID = Date.parse(new Date()) 
通过递归数组,给数组中的对象添加新字段
methods:{ 
    // 递归 添加字段 recursion(arr) { 
    console.log(arr) arr.forEach((el) => { 
    console.log(el) // let myID = Date.parse(new Date()); let myID = Math.random().toString(36).substr(2); this.$set(el, "myID", myID); console.log(el) if (el.children && el.children.length) { 
    this.recursion(el.children); } }); }, } //调用递归方法 this.recursion(Array); var Array = [{ 
    "id": 1, "showName": "XXX席位方案", "children": [{ 
    "id": 121, "showName": "XXX部们", "children": [{ 
    "id": 131, "showName": "系统分类", "children": [{ 
    "id": 141, "code": "172.16.66.212", "showName": "电脑席位", "startOver": 96, "memoryUsage": 18, "cpuUsage": 39, "children": [{ 
    "id": 151, "showName": "软件开发", "code": , "startOver": 16, "cpuUsage": 45, "memoryUsage": 17 }] }] }] }] }] 
实例-递归方式添加数组中对象属性

全代码单页面实例

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <div id="app"> <button @click="showinfo(arr)">显示</button> </div> // <script src="./vue.js"></script> // 或 <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script> var vm = new Vue({ 
     el: '#app', data: { 
     arr: [{ 
     "id": 1, "showName": "XXX席位方案", "children": [{ 
     "id": 121, "showName": "XXX部们", "children": [{ 
     "id": 131, "showName": "系统分类", "children": [{ 
     "id": 141, "code": "172.16.66.212", "showName": "电脑席位", "startOver": 96, "memoryUsage": 18, "cpuUsage": 39, "children": [{ 
     "id": 151, "showName": "软件开发", "code": , "startOver": 16, "cpuUsage": 45, "memoryUsage": 17 }] }] }] }] }] }, // 给vue实例定义 方法,这个方法可以供事件操作使用 methods: { 
     showinfo: function (arr) { 
     console.log(this) // 获取data数据,具体通过this关键字 console.log(arr) arr.forEach((el) => { 
     console.log(el) // let myID = Date.parse(new Date()); let myID = Math.random().toString(36).substr(2); this.$set(el, "myID", myID); console.log(el) if (el.children && el.children.length) { 
     this.showinfo(el.children); } }) } } }); console.log(vm) </script> </body> </html> 

显示效果

在这里插入图片描述

到此这篇数组中添加对象 & 通过递归数组,给数组中的对象添加新字段 & $set给对象添加新属性 & 遍历唯一ID标识-随机数或时间戳的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Node学习(九)022-管理系统之添加英雄——服务器编写添加的接口-使用multer模块来处理、multer基本用法& 处理新的静态资源之express.static() & dirname绝对路径2024-12-02 10:00:08
  • 下载网页视频简单的办法之一2024-12-02 10:00:08
  • 短视频剪辑真的不难!50个新手必备剪辑技巧。2024-12-02 10:00:08
  • 史上最全证件照尺寸介绍「码住不迷路」2024-12-02 10:00:08
  • 一朝马死黄金尽,亲着如同陌路人。2024-12-02 10:00:08
  • 4.ES5中的类2024-12-02 10:00:08
  • ElementUI el-tabs切换之前判断是否满足切换条件 不满足条件仅提示不切换Tab2024-12-02 10:00:08
  • 反激电路工作原理是什么(反激电路的原理)2024-12-02 10:00:08
  • 反激电路原理详解(反激电路原理详解ppt)2024-12-02 10:00:08
  • max31855电路图(max3485典型电路)2024-12-02 10:00:08
  • 全屏图片