精华内容
下载资源
问答
  • 修改对象名称的属性
    千次阅读
    2021-12-24 14:22:42

    代码

    // 更改对象属性名
    // 第一个参数为要更改的对象,第二个参数为属性名映射数组
    // 如将属性名为 “日期” 更改为 "date" : [{ key: '日期', value: 'date' }]
    export function 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] = 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] = copyTransFunc (obj[_key], arguments[1]);
                    else
                        result[_key] = copyTransFunc (obj[_key], arguments[1])
                }
            }
        } else {
            return obj
        }
        return result
    }
    

    使用

    import { copyTransFunc } from '@/utils/formatDataKey.js'
    ......
    let keyMapping = [
              { key: '日期', value: 'date' },
              { key: '岗位', value: 'station' },
              { key: '工单号', value: 'workOrder' },
              { key: '工作内容', value: 'tasks' },
              { key: '工作时长', value: 'workHours' },
              { key: '开始时间', value: 'startWorkTime' },
              { key: '结束时间', value: 'endWorkTime' },
            ]
    // 更改excel数据属性名
    this.excelData = copyTransFunc(this.excelData, keyMapping)
    

    ES10版

    let obj = {
        '日期':'2023',
        '年龄':{
            a:12,
            b:23,
        },
        '身高':[12,4,5,6],
        '体重':78
    }
    
    let keymapping = [
        {key:'日期',newKey:'date'},
        {key:'体重',newKey:'weight'},
        {key:'身高',newKey:'tall'}
    ]
    
    function changeKey2(obj,kepmapping){
        let oldKeysArr = Object.keys(obj)
        let arr = Object.entries(obj)
        let changedKeyIndex = []
        keymapping.forEach(item=>{
            if(oldKeysArr.indexOf(item.key)!==-1){
                arr[oldKeysArr.indexOf(item.key)][0] = item.newKey
            }
        })
        return Object.fromEntries(arr)
    }
    
    console.log(changeKey2(obj,keymapping))  
    //  {"date":"2023","年龄":{"a":12,"b":23},"tall":[12,4,5,6],"weight":78}
    
    更多相关内容
  • java小技巧~修改对象属性

    千次阅读 2021-09-03 10:58:51
    今天联调的时候,有个功能是在初始化的...将对象数组转成字符串:JSON.stringify(); 使用replaceAll全部替换, 将字符串传成对象 let str = JSON.stringify(this.uploaderList); let str1 = str.replaceAll('filePa

    今天联调的时候,有个功能是在初始化的时候将图片路径回显到vant组件的上传组件上,但是vant组件需要图片路径名叫url,而后端返给我的路径名叫filePath,而且是双层嵌套。一个个遍历老麻烦了,下面这个方法可以提高效率:

    思想:

    1. 将对象数组转成字符串:JSON.stringify();
    2. 使用replaceAll全部替换,
    3. 将字符串传成对象
    let str = JSON.stringify(this.uploaderList);
    let str1 = str.replaceAll('filePath', 'url');
    this.uploaderList = JSON.parse(str1);

    展开全文
  • Java基础系列:反射修改对象属性

    千次阅读 2020-11-26 23:19:03
    利用反射,通过类属性名称修改属性的值。 2 修改属性值 2.1 实体类 package com.company.designpattern.reflect; import java.util.Objects; /** * 测试类,用于反射测试 * @author xindaqi * @since ...

    1 应用场景

    利用反射,通过对象(类实例化)属性名称,修改对象(类实例化)属性的值。
    此处感谢:TD_FAlmK。

    2 修改类属性值

    2.1 实体类

    package com.company.designpattern.reflect;
    
    import java.util.Objects;
    
    /**
     * 测试类,用于反射测试
     * @author xindaqi
     * @since 2020-11-26
     */
    
    public class User {
    
        private String name;
    
        private String address;
    
        private Integer age;
    
        public User() {}
    
        public User(String name, String address, Integer age) {
            this.name = name;
            this.address = address;
            this.age = age;
        }
    
        @Override 
        public boolean equals(Object o) {
            if(this == o) {
                return true;
            }
            if(null == o || getClass() != o.getClass()) {
                return false;
            }
            User that = (User) o;
            return name.equals(that.name) && address.equals(that.address) && age == that.age;
        }
    
        @Override 
        public int hashCode() {
            return Objects.hash(name, address, age);
        }
    
        public void setName(String name) {
            this.name = name;
        }
        public String getName() {
            return name;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
        public String getAddress() {
            return address;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
        public Integer getAge() {
            return age;
        }
    
        @Override 
        public String toString() {
            return "User:{" + "name: " + name
                + "address: " + address
                + "age: " + age
                + "}"; 
        }  
    }
    

    2.1 暴力修改

    package com.company.designpattern.reflect;
    
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    /**
     * 反射测试
     * @author xindaqi
     * @since 2020-11-26
     */
    
    public class ReflectTest {
    
        public static void main(String[] args) throws Exception {
            /**
             * 类实例化
             */
            User user = new User("xiaoxiao", "shenzhen", 10);
            /**
             * 反射获类
             */
            Class<?> clazz = user.getClass();
            /**
             * 获取类中所有属性
             */
            Field[] fields = clazz.getFields();
            System.out.println("Methods in Class: " + fields);
            /**
             * 获取某个属性方法
             * 如name属性的方法
             */
            Field field = clazz.getDeclaredField("name");
            /**
             * 开启私有属性编辑权限
             */
            field.setAccessible(true);
            /**
             * 设置属性值
             */
            field.set(user, "dada");
            Class s = field.getType();
            System.out.println("data type: " + s);
            System.out.println("Object name: " + field.getName());
            System.out.println("暴力赋值: " + user.getName());
        }
        
    }
    

    2.2 内省机制修改

    package com.company.designpattern.reflect;
    
    import java.beans.PropertyDescriptor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    
    /**
     * 反射测试
     * @author xindaqi
     * @since 2020-11-26
     */
    
    public class ReflectTest {
    
        public static void main(String[] args) throws Exception {
            /**
             * 类实例化
             */
            User user = new User("xiaoxiao", "shenzhen", 10);
            /**
             * 反射获类
             */
            Class<?> clazz = user.getClass();
            /**
            * 内省机制
            */
            PropertyDescriptor propertyDescriptor = new PropertyDescriptor("name", clazz);
            Method setMethod = propertyDescriptor.getWriteMethod();
            setMethod.invoke(user, "erer");
            System.out.println("内省机制: " + user.getName());
        }
    }
    

    3 小结

    3.1 暴力修改

    暴力修改private属性值,需要使用setAccessable(true)方法获取修改权限,否则会出现如下情况:
    Exception in thread “main” java.lang.IllegalAccessException: Class com.company.designpattern.reflect.ReflectTest can not access a member of class com.company.designpattern.reflect.User with modifiers “private”
    at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
    at java.lang.reflect.AccessibleObject.slowCheckMemberAccess(AccessibleObject.java:296)
    at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:288)
    at java.lang.reflect.Field.set(Field.java:761)
    at com.company.designpattern.reflect.ReflectTest.main(ReflectTest.java:39)

    3.2 内省模式

    通过PropertyDescriptor获取属性类实例,调用getWriteMethod()获取属性的写方法,invoke即可设定属性值。


    【参考文献】
    [1]
    [2]

    展开全文
  • 修改对象属性名的两种方法

    千次阅读 2021-09-02 12:45:16
    修改前的数据 let HouChen = [ { name: '羽神', 年龄: 13, sex: '女', userList: [{ id: 1, Z_name: '钢铁侠' }] }, { name: '少主', 年龄: 14, sex: '女', userList: [{ id: 2, Z_name: '蜘蛛侠' }] }, { name:...

    每天都能遇到奇奇怪怪的问题哈

    修改前的数据

     let HouChen = [
          { name: '羽神', 年龄: 13, sex: '女', userList: [{ id: 1, Z_name: '钢铁侠' }] },
          { name: '少主', 年龄: 14, sex: '女', userList: [{ id: 2, Z_name: '蜘蛛侠' }] },
          { name: '刘备', 年龄: 15, sex: '女', userList: [{ id: 3, Z_name: '绿巨人' }] },
          { name: '关于', 年龄: 17, sex: '女', userList: [{ id: 4, Z_name: '美国队长' }] },
          { name: '老威', 年龄: 15, sex: '男', userList: [{ id: 5, Z_name: '冲锋侠' }] },
          { name: '村长', 年龄: 13, sex: '女', userList: [{ id: 6, Z_name: '峡谷先锋' }] }
        ]
    
    1. 通过forEach遍历
     function convertKey(arr, key) {
          let newArr = [];
          HouChen.forEach((item, index) => {
            let newObj = {};
            for (var i = 0; i < key.length; i++) {
              newObj[key[i]] = item[Object.keys(item)[i]]
            }
            newArr.push(newObj);
          })
          return newArr;
        }
    
        let HouChen2 = convertKey(HouChen, ['person', 'age', 'sex', 'children',]);
    

    修改后的数据

          { person: '羽神', age: 13, sex: '女', children: [{ id: 1, Z_name: '钢铁侠' }] },
          { person: '少主', age: 14, sex: '女', children: [{ id: 2, Z_name: '蜘蛛侠' }] },
          { person: '刘备', age: 15, sex: '女', children: [{ id: 3, Z_name: '绿巨人' }] },
          { person: '关于', age: 17, sex: '女', children: [{ id: 4, Z_name: '美国队长' }] },
          { person: '老威', age: 15, sex: '男', children: [{ id: 5, Z_name: '冲锋侠' }] },
          { person: '村长', age: 13, sex: '女', children: [{ id: 6, Z_name: '峡谷先锋' }] }
    
    1. 通过递归 可以修改对象数组中对象的属性名
     function copyTransFun(arr) {
          arr.forEach((item, value) => {
            if (item.name) {
              item.person = item.name;
              delete item.name;
            }
            if (item.Z_name) {
              item.Z_person = item.Z_name;
              delete item.Z_name;
            }
            if (item.userList) {
              item.children = item.userList;
              delete item.userList;
              if (item.children.length) {
                this.copyTransFun(item.children);
              }
            }
    
          });
        }
        copyTransFun(HouChen)
    

    修改后的数据

          { person: '羽神', age: 13, sex: '女', children: [{ id: 1, Z_person: '钢铁侠' }] },
          { person: '少主', age: 14, sex: '女', children: [{ id: 2, Z_person: '蜘蛛侠' }] },
          { person: '刘备', age: 15, sex: '女', children: [{ id: 3, Z_person: '绿巨人' }] },
          { person: '关于', age: 17, sex: '女', children: [{ id: 4, Z_person: '美国队长' }] },
          { person: '老威', age: 15, sex: '男', children: [{ id: 5, Z_person: '冲锋侠' }] },
          { person: '村长', age: 13, sex: '女', children: [{ id: 6, Z_person: '峡谷先锋' }] }
    
    展开全文
  • java反射修改对象属性

    千次阅读 2022-04-20 15:47:41
    java反射修改对象属性
  • 通过反射修改对象属性

    千次阅读 2020-06-29 11:12:59
    public static void main(String[] args) throws Exception {... * 通过反射调取方法修改参数,应用场景比较多 */ //获取反射对象 Class<?> name = Class.forName(str); //获取实例,因为newInstance方法得到
  • 通过JSON+正则修改对象属性 JSON.parse(JSON.stringify(list).replace(/title/g, 'name')) 1.JSON.stringify()将json对象转为JSON字符串 2.使用正则的replace(/title/g, 'name'))方法将tilte替换为name 3.JSON....
  • js更改对象属性名的方法

    万次阅读 2020-05-27 15:52:02
    动态修改name为text,userName也修改为text,userList为children 处理方法: 方案一:封装copyTransFunc方法,参数有两个,一个是arr,一个是数组,数组里可以配置修改的key和替换的value,支持多个 // 将arr对象中...
  • vue 修改数组中某个对象属性

    千次阅读 2021-12-10 09:16:45
    比如要有如下数组 data() { return { certificateData: [ { name: 'xxx', type: '环境证书', imgs:[{url: 'xxxx.png'] }, { name: 'yyy', type: '安全证书', imgs:[{url: 'yyy.png'}] ...修改对象中 i
  • 动态修改对象注解属性的值

    千次阅读 2019-11-12 17:40:20
    * 动态修改对象属性上某个注解的属性值,通过getClazz()方法可以得到修改后的class * @param fieldName 对象属性名称 * @param annotationClass 注解class * @param attrName 注解属性名称 * @param attrValue ...
  • js修改数组对象属性

    千次阅读 2020-11-02 15:54:19
    我是在用mui框架的picker选择器时,`发现添加的数组不显示,仔细看才发现好像数组对象有固定的属性名称value和text,如下所示 picker.setData([{value:'zz',text:'智子'}]); 我从后台拿到的数组是这样的 ...
  • JS遍历对象修改属性

    千次阅读 2021-01-05 13:57:45
    根据接口返回数据中number属性值,对数据进行截取,并改变属性名. 下面是需要处理的数据 let data = {  value: [  {date: "2021-01", thumb: "1", index: "1"},  {date: "2021-02", thumb: "2", index: "2"},  {...
  • 一、修改坐标轴对象属性、 1、修改坐标轴对象属性、 2、xlim / ylim 函数修改坐标轴属性、 3、修改坐标轴文字大小、 4、修改坐标轴刻度 ( 连续刻度 )、 5、修改坐标轴刻度 ( 指定字符串刻度 )、 二、修改线对象属性...
  • 二:修改游戏对象属性,不要在start中直接写修改 首先创建一个私有属性 private GameObject test; 然后在start中给test进行赋值 var test = GameObject.Find(“GameObject(4)”); 在update中进行操作 test.tra
  • 修改对象属性值 List<LibraryDO> lib = list.stream().map(p -> {p.setId(p.getId() + 1);return p;}).collect(Collectors.toList()) /** * LibraryDO 对象 */ public class LibraryDO implements Serializable { /...
  • 一般修改对象数组的对象属性名,最简便的就是通过遍历对象数组的方法进行修改,但是用这个方法,如果处理的数据量很大,它的执行效率是非常低的。下面介绍一个更高效的方法,即通过正则的方法进行过滤修改。 JSON....
  • 在小程序开发的过程中,我们总会少不了去用setData去拿数据,让数据驱动视图,我们可以把object、array、number、string、都能setData上去,我们也可以在下面操作它们,但是如果我们碰到更换对象中的其中一个属性值...
  • JavaScript 对象,动态的更改对象属性名 1、普通对象 对象属性名和属性值, 通常是属性值是变动的,但名字是不变的 如: let a = 'abc'; let obj = { name:"xxx" } console.log(obj) //{name: "xxx"} 2、使用变量...
  • --1、修改字段名:alter table 表名 rename column A to B--2、修改字段类型:alter table 表名 alter column 字段名 type not null-- 修改字段类型长度ALTER TABLE userinfoALTER COLUMN name varchar(100);...
  • 改变数组中对象属性名称

    千次阅读 2020-04-17 15:48:24
    在一定的时间,我们可能需要将数据进行相应的转换,才能进行使用,今天我就需要将一个数组中的对象属性名进行替换,才能进行数据的调用, 1.首先先得到我们将要转换的数组, { day: '2018-12-26 14:31:55' }, ...
  • * 将旧对象属性值与新对象属性值做比较 记录修改属性名称 * @param oldObject 旧对象 * @param newObject 新对象 * @return 修改对象属性名称集合 */ public static List<String> ...
  • kotlin反射获取对象属性名称和值

    千次阅读 2021-09-10 15:39:51
    背景:java的反射都知道,最近学习kotlin,想用反射,就研究了下,kotlin反射获取对象属性的值。 val t = any::class.memberProperties t.forEach { // 编译后,属性默认是private,需要设置isAccessible 才可以...
  • js 更改对象中的属性

    千次阅读 2019-07-22 17:30:52
    网上大多是利用JSON转为字符串再进行替换修改属性名 var bbb = JSON.parse(JSON.stringify(aaa).replace(/Name/g,"title")); 这样做会有2个缺点,1.如果属性值匹配到会被更改 2.属性名中有部分匹配到也会被更改 ...
  • Jackson序列化 — 修改属性名称

    千次阅读 2020-10-27 20:58:48
    @JsonProperty 可以打在字段上,也可以打在属性上。当在打在字段上的时候,可以省略对应字段的getter方法。 代码示例: import com.fasterxml.jackson.core.JsonProcessingException; import ...
  • js循环遍历树形结构对象修改属性

    千次阅读 2021-03-25 19:37:33
    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <script> const data =[ ... sort..
  • 改变 json 对象属性

    千次阅读 2018-08-28 18:06:48
    改变一个json对象属性名 details.template是一个json 对象{} 里面有一个children:[] 现在我想把children 这个数组的属性名改为list 用 replace(/children/g, "list")) const template = JSON....
  • 修改对象属性的方法

    千次阅读 2019-09-23 23:36:22
    为了修改属性性,使用上一页中介绍的如果对象不具备你打算修改属性,...对象名后跟上方如果想要修改属性不存在,此动作会将括号,方括号里面是属性名称。这个属性添加给对象。 删除对象属性: 若要...
  • js高效修改对象数组里的对象属性

    万次阅读 热门讨论 2019-01-01 14:16:55
    一般修改对象数组的对象属性名,最简便的就是通过遍历对象数组的方法进行修改,但是用这个方法,如果处理的数据量很大,它的执行效率是非常低的。下面介绍一个更高效的方法,即通过正则的方法进行过滤修改。 JSON....
  • js修改数组对象属性(key)名

    万次阅读 2019-03-15 15:46:40
    例如:把如下data1的key名称修改成data2中的key名称 data1: [ { appName: '应用1', capacity: 233456 }, { title: '应用2', key: 124535 }] data2: [ { name: '应用1', value: 233456 }, { name: '应用2', ...
  • 一、如何利用反射获取对象 所使用的pojo: public class Person { private String name; private static int age = 58; public Person() { System.out.println("Person的无参构造器"); } public Person...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 603,749
精华内容 241,499
关键字:

修改对象名称的属性