前后端数据不同,如何封装适配,所有数据通用

1、对适配的方法进行了封装

方法1:

(function () {
    /**
     * 前后端数据不同的封装适配,所有数据通用
     * @param end_data 后端传过来的数据
     * @param relationObj 数据不同,需要适配的键名组成的对象,格式:{前端需要的键名:后端传过来的键名},例如:{"stuNo": "id","Name": "name",}
     * @returns {*[]} 返回适配后的新数组
     */
    function dataAdapter(end_data, relationObj) {
        let newArr = [];
        end_data.forEach((item) => {//循环后端传过来的数组
            let newObj = new Object();//创建一个新对象
            newObj = {...item};//将后端传过来的数组中的元素(对象)深拷贝给新创建的对象newObj
            for (let key in relationObj) {//遍历前端用户传过来的数组
                delete newObj[relationObj[key]];//删除新创建的对象中的属性(后端和前端不同需要适配的)
                //[key]是用户传过来对象中的键名,relationObj[key]是键值
                newObj[key] = item[relationObj[key]];//将后端传过来的数组中元素(对象)中的键值赋值给新对象
            }
            newArr.push(newObj);
        })
        return newArr;
    }

    window.dataAdapter = dataAdapter
})();

方法2:使用map

(function () {
    /**
     * 前后端数据不同的封装适配,所有数据通用
     * @param end_data 后端传过来的数据
     * @param relationObj 数据不同,需要适配的键名组成的对象,格式:{前端需要的键名:后端传过来的键名},例如:{"stuNo": "id","Name": "name",}
     * @returns {*[]} 返回适配后的新数组
     */
    function dataAdapter(end_data, relationObj) {
        return end_data.map((item) => {
            let newObj = new Object();//创建一个新对象
            for (let key in relationObj) {//遍历前端用户传过来的数组
                delete newObj[relationObj[key]];//删除新创建的对象中的属性(后端和前端不同需要适配的)
                //[key]是用户传过来对象中的键名,relationObj[key]是键值
                newObj[key] = item[relationObj[key]];//将后端传过来的数组中元素(对象)中的键值赋值给新对象
            }
            return newObj
        })
    }

    window.dataAdapter = dataAdapter
})();

2、调用封装好的方法

将后端传过来的数据以及需要适配的数据作为参数传过去

function dataConversion() {
    //后端传过来的数据
    let student_end = [
        {id: 1, name: '张三', age: 23, sex: 0, address: '成都市'},
        {id: 2, name: '李四', age: 25, sex: 1, address: '宜宾'},
        {id: 3, name: '王五', age: 26, sex: 1, address: '遂宁市'},
        {id: 4, name: '赵六', age: 27, sex: 0, address: '南充'}
    ];

    //调用封装好的方法
    let result = dataAdapter(student_end, {
        "stuNo": "id",
        "Name": "name",
        "stu_age": "age",
        // "sex": "sex",
        // "address": "address"
    })
    console.log(result);
}
dataConversion();

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值