两个相同的对象,当对象A的属性为空,从对象B从拿到不为空的属性并赋值

public static Object assignmentAllNullFields(Object oldObj, Object newObj) {
        try {
            // 获取对象的属性数组
            Field[] fields = newObj.getClass().getDeclaredFields();
            
            for (Field field : fields) {
                //设置可以访问私有成员
                field.setAccessible(true);
                // 根据对象实例获取属性的值
                Object resultValue = field.get(newObj);

                // 判断 newObj 的哪些属性为空,为空则用 oldObj 的属性填充
                if (resultValue == null){
                    Object o = field.get(oldObj);
                    field.set(newObj, o);
                }
            }
        } catch (Exception e) {
           //异常处理
        }
        
        return newObj;
    }
在Vue2项目里,要把接口返回数据中两个数组里第一个对象的所有属性提取出来,且和外层数据平级,形成一个没有对象层级的对象,可按以下步骤实现。 ### 示例代码 ```vue <template> <div> <!-- 可以在这里使用处理后的数据 --> </div> </template> <script> export default { data() { return { apiData: { outerProp1: 'value1', outerProp2: 'value2', array1: [ { propA: 'a', propB: 'b' }, { propC: 'c' } ], array2: [ { propD: 'd', propE: 'e' }, { propF: 'f' } ] }, flattenedData: {} }; }, created() { this.flattenData(); }, methods: { flattenData() { const { outerProp1, outerProp2, array1, array2 } = this.apiData; const firstObjArray1 = array1.length > 0 ? array1[0] : {}; const firstObjArray2 = array2.length > 0 ? array2[0] : {}; this.flattenedData = { outerProp1, outerProp2, ...firstObjArray1, ...firstObjArray2 }; console.log(this.flattenedData); } } }; </script> ``` ### 代码解释 1. **定义数据**:在`data`函数里定义`apiData`,这是接口返回的数据,同定义`flattenedData`用于存放处理之后的数据。 2. **处理数据**:在`created`钩子函数中调用`flattenData`方法。 3. **`flattenData`方法**: - 解构赋值获取外层数据和两个数组。 - 分别检两个数组是否有元素,若有则取第一个对象,没有就用对象。 - 运用展开运算符将外层数据、两个数组第一个对象属性到`flattenedData`里。 ### 总结 借助上述代码,就能把接口返回数据中两个数组里第一个对象的所有属性提取出来,且和外层数据平级,最终形成一个只包含属性而无对象层级的对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值