js设计模式:适配器模式

作用:

可以将某种不同格式的数据转化为自己所期待的数据格式

或者对于一些存在兼容或者特殊处理的业务逻辑,可以进行一个适配

示例:

javascript 复制代码
        //原始数据
        let oldData1 = [
            {
                name: '王惊涛',
                age: 29
            },
            {
                name: '孙悟空',
                age: 800
            },
            {
                name: '嘉文四世',
                age: 27
            },
            {
                name: '关羽',
                age: 40
            },
            {
                name: '伊利丹.怒风',
                age: 10000
            }
        ]

        let oldData2 = [
            {
                name: 'faker',
                mvpNumber: 125,
                winRate: '68%'
            },
            {
                name: 'zeus',
                mvpNumber: 23,
                winRate: '61%'
            },
            {
                name: 'gumayusi',
                mvpNumber: 13,
                winRate: '69%'
            }, {
                name: 'oner',
                mvpNumber: 21,
                winRate: '56%'
            }, {
                name: 'keria',
                mvpNumber: 14,
                winRate: '72%'
            }
        ]
        //echarts需要的数据类型是[name1,name2,...][data1,data2,...]这种类型的
        //我们这里需要设置一个功能函数,对我们所获取的原始数据进行一个适配,得到我们想要的数据类型
        //如果后台的数据组织基本格式化,我们也需要针对格式化的数据进行一个格式化的处理
        const AdaptiveFun = (list) => {
            let obj = list[0]
            let keyArr = Object.keys(obj)
            let newObj = {}
            keyArr.forEach(Item => {
                newObj[`${Item}List`] = []
                list.forEach(item => {
                    newObj[`${Item}List`].push(item[Item])
                })
            })
            return newObj
        }
        let newData1 = AdaptiveFun(oldData1)
        let newData2 = AdaptiveFun(oldData2)
        console.log(newData1,'数据1')
        console.log(newData2,'数据2')
相关推荐
AI人工智能+电脑小能手14 分钟前
大白话说Java设计模式-37-中介者模式(源码剖析篇)
java·设计模式·线程池·中介者模式·源码分析·executor·applicationeventmulticaster
网安蟹佬霸20 分钟前
区块链与智能合约安全实战:从Solidity审计到DeFi漏洞深度剖析
运维·前端·网络·安全·自动化·区块链·智能合约
念何架构之路24 分钟前
Gin响应渲染
前端·javascript·gin
invicinble29 分钟前
设计网站的底层思路(深刻版本)
前端
三8441 小时前
WordPress REST API 参数校验机制剖析:为什么 author__not_in 无法直接盲注?
服务器·前端·数据库
ITmaster07311 小时前
Vibe Coding 时代:Vue 消失了还是 React 太强?
前端·vue.js·react.js
WebInfra1 小时前
Rspack 2.2 发布:30+ 项性能优化,拥抱 Solid 2.0
前端·javascript·前端框架
额额额对了1 小时前
Linux 进程管理详解:从概念到实战
java·服务器·前端
fatcoder1 小时前
玩转 Redis · Set 篇
前端·redis·后端
爱喝麻油的小哆1 小时前
🐾 Day 5|桌面数字人-接入llm可以对话啦
前端·three.js