数据格式如下:

let arr = [{"id": 275,"name": "测试公司","userList": [{"id": 697,"userName": "11111"}]}, {"id": 327,"name": "有限公司","userList": [{"id": 743,"userName": "张三"}, {"id": 744,"userName": "李四"}]}
];

问题一:动态修改name为text,userName也修改为text,userList为children

处理方法:

方案一:封装copyTransFunc方法,参数有两个,一个是arr,一个是数组,数组里可以配置修改的key和替换的value,支持多个

// 将arr对象中的name键改为text、userName键改为text、userList键改为chilrenconsole.log(this.copyTransFunc(arr, [{ key: "name", value: "text" }, { key: "userName", value: "text" },{ key: "userList", value: "chilren" }]));copyTransFunc (obj, typeArr) {let result;let toString = Object.prototype.toString;if (toString.call (obj) === '[object Array]') {result = [];for (let i = 0; i < obj.length; i++) {result[i] = this.copyTransFunc (obj[i], arguments[1])}} else if (toString.call (obj) === '[object Object]') {result = {};for (let _key in obj) {if (obj.hasOwnProperty (_key)) {let flag = 0, _value = null;for (let j = 0; j < arguments[1].length; j++) {if (arguments[1][j].key === _key) {flag = 1;_value = arguments[1][j].value}}if (flag)result[_value] = this.copyTransFunc (obj[_key], arguments[1]);elseresult[_key] = this.copyTransFunc (obj[_key], arguments[1])}}} else {return obj}return result}

方案二:递归解决

copyTransFun (arr) {arr.forEach ((item) => {if (item.name) {item.text = item.name;delete item.name;}if (item.userName) {item.text = item.userName;delete item.userName;}if (item.userList) {item.children = item.userList;delete item.userList;if (item.children.length) {this.copyTransFun (item.children);}}});},

方案三:处理两级情况

//处理只有两级情况
let col = [];arr.forEach((item, index) => {col.push({id: item.id,text: item.name,children: item.userList,},);});col.forEach((_item, _index) => {if (_item.children && _item.children.length) {_item.children.forEach((item, index) => {if (Object.getOwnPropertyNames(item).length) {item.id = item.id;item.text = item.userName;}})}});

交流

1、QQ群:可添加qq群共同进阶学习: 进军全栈工程师疑难解  群号:   856402057

2、公众号:公众号「进军全栈攻城狮」 ,对前端技术保持学习爱好者。我会经常分享自己所学所看的干货,在进阶的路上,共勉!

 工作之余,不要忘记吃饭了,天天可领哦!

          

js更改对象中属性名的方法相关推荐

  1. js给对象添加变量属性 js 更改对象中的属性名 数组对象中每个对象添加一个字段-map用法和forEarch用法

    js给对象添加变量属性 & js 更改对象中的属性名 & 数组对象中每个对象添加一个字段-map用法和forEarch用法 1.js给对象添加变量属性 1.js创建一个对象或者在原有对 ...

  2. js 把对象按照属性名的字母顺序进行排列

    var obj = {name: "zhangsan", age: 8, ace: 5, nbme: "lisi"};//要排序的对象function objK ...

  3. js删除对象空属性值的方法

    1.删除对象空属性值 正常情况下,拿到的数据是{01:["鹿晗","关晓彤"]} 但当用户更改选项之后,我们可能拿到数据就是{01:[]},01的属性值是空的, ...

  4. JavaScript String对象中属性的使用方法

    当String()和运算符new 一起作为构造函数使用时,它返回一个新创建的String对象,存放的是字符串s或s的字符串表示. 当不用new运算符调用String()时,它只把s转换成原始的字符串, ...

  5. js根据对象中属性删除数组中对象

    list.forEach((value,index)=>{if(value.content==content){list.splice(index,1)} })

  6. JS判断对象是否为空的方法大全

    JS判断对象是否为空的方法大全 1.将json对象转化为json字符串,再判断该字符串是否为"{}" var data = {}; var b = (JSON.stringify( ...

  7. js删除对象中所有值为null和undefined的属性

    和后台对接的时候的需求,他们不希望我传入那些值为null和undefined的属性,那我就先删除了吧. var obj = {aaa: 1,b: null,ccc: 'js删除对象中所有值为null的 ...

  8. JS向对象中添加和删除属性

    向对象中添加属性 语法: 对象.属性名 = 属性值; 对象["属性名"] = 属性值; //这种方式能够使用特殊的属性名 对象的属性名没有任何要求,不需要遵守标识符的规范,但是在开 ...

  9. 使用变量的值作为JS对象的属性名,从而获取其对应的值

    使用变量的值作为JS对象的属性名,从而获取其对应的值 <script>var object={"a":1111,"b":2222};var para ...

最新文章

  1. 【iOS】NSDate分类,获得中国农历
  2. 数组去重与数组扁平化
  3. asp.net 服务器控件的 ID,ClientID,UniqueID 的区别
  4. 【转】一篇文章读懂人力资源三支柱体系(COE・BP・SSC)
  5. 这种动作片还需要汽车特效?
  6. SpringBoot2.1.9 多MongoDB配置
  7. 链表!比数组更适合做增删操作的数据结构
  8. 前端学习(2583):生态圈练习解答下
  9. c#equals方法源码_C#中的Int32.Equals()方法示例
  10. 使用rancher-2.5.5部署单节点kubernetes集群
  11. 华为Q22机顶盒,刷机固件及教程(当贝桌面)
  12. stata面板数据gmm回归_12短动态面板数据模型1-差分GMM估计-Stata软件操作教程
  13. 【HAVENT原创】Mac 下编译 ReactNative(CRN) 踩坑记录
  14. 【win 10系统激活】
  15. android5.0+电视,当Android 5.0搭载在电视上,是一种怎样的体验?
  16. 亚马逊六页纸的理解与思考
  17. Animator:ACT游戏三连击效果实现综述
  18. safar浏览器找不到服务器,Safari浏览器打不开网页是什么问题 Safari有哪些操作技巧...
  19. 大整数加法【信息学奥赛一本通-1168】
  20. “蔚来杯“2022牛客暑期多校训练营2 个人题解集合

热门文章

  1. 误差条图各部分的代表意思_混凝土搅拌站计量误差原因分析及控制措施
  2. 4位大咖面对面传授EOS真经,EOS热潮真的来了...| 沙龙直击
  3. win10 文件服务器搭建,Win10搭建RTMP服务器
  4. matlab取模与取余
  5. virtualbox 与vmware 之为什么我放弃了virualbox
  6. uniapp + vue3微信小程序开发(5)授权
  7. SpringBoot 启动自定义Logo 佛主保佑版
  8. neutron 基本概念简介
  9. 【力扣刷题总结】数据库题目按知识点分类总结
  10. Google Colab 无敌详细使用教程