我又来请教一个方法了。 掩面哭泣

2022-03-25 11:04:53 +08:00
 pianjiao
    const list = {
        email: {
            a: {
                big: {
                    rule: ['abig'],
                    isShow: true, 
                    extends: [] 
                },
                small: {
                    rule: ['asmall'],
                    isShow: false,
                    extends: [] 
                }
            },
            b: {
                big: {
                    rule: ['bbig'],
                    isShow: true, 
                    extends: [] 
                },
                small: {
                    rule: ['bsmall'],
                    isShow: false,
                    extends: [] 
                }
            },
        },
        qq: {
            a: {
                big: {
                    rule: ['abigqq'],
                    isShow: true, 
                    extends: [] 
                },
                small: {
                    rule: ['asmallqq'],
                    isShow: false,
                    extends: [] 
                }
            },
            b: {
                big: {
                    rule: ['bbigqq'],
                    isShow: true, 
                    extends: [] 
                },
                small: {
                    rule: ['bsmallqq'],
                    isShow: false,
                    extends: [] 
                }
            },
        },
    }

比如说 我传入了 a big 那么就取 qq 和 email 下 a => big 里面的转化成下面格式的 对象

    const data = {
        rule: {
            email: ['abigemail'],
            qq: ['abigqq']
        },
        ishow: {
            email: true,
            qq: false
        },
        extends: {
            email: [],
            qq: []
        }
    }
5444 次点击
所在节点    程序员
43 条回复
zcf0508
2022-03-25 11:15:42 +08:00
让后端按要求返回数据
pianjiao
2022-03-25 11:27:01 +08:00
pengtdyd
2022-03-25 11:32:49 +08:00
别搞 IT 了吧,找个厂打螺丝吧
Curtion
2022-03-25 12:02:41 +08:00
function getCustomData(a, b) {
let data = {}
for (let item in list) {
for (let key in list[item][a][b]) {
data[key] = {
...data[key],
[item]: list[item][a][b][key]
}
}
}
return data
}
console.log(getCustomData('a', 'big'))
flowerpiggy
2022-03-25 12:06:31 +08:00
用 proxy 最方便。
oneisall8955
2022-03-25 12:16:15 +08:00
絮我直言,为什么一个 map/dict 的变量是 list
DOLLOR
2022-03-25 12:19:19 +08:00
@pengtdyd 看以往发帖记录,应该木材厂😂
BingoXuan
2022-03-25 12:25:35 +08:00
假设你用的是 js ,导入 lodash 后
{
rule: {
email: _.get(list,'email.a.big.rule'),
qq: _.get(list,'qq.a.big.rule')
},
isShow: {
email: _.get(list,'email.a.big.isShow'),
qq: _.get(list,'qq.a.big.isShow')
},
extends: {
email: _.get(list,'email.a.big.extends'),
qq: _.get(list,'qq.a.big.extends')
}
}
superfatboy
2022-03-25 13:13:22 +08:00
找个场,剪视频吧
yousabuk
2022-03-25 13:43:47 +08:00
哈哈哈哈😂你的工资是由 V 友支撑起来的吗?
VagabondH
2022-03-25 16:25:08 +08:00
const convert = (data) => {
const result = {};

const keysLevel1 = Object.keys(data);
keysLevel1.forEach(k1 => {
console.log(k1, 'k1');
const keysLevel2 = Object.keys(data[k1]);
keysLevel2.forEach(k2 => {
console.log(k2, 'k2');
const keysLevel3 = Object.keys(data[k1][k2]);
if (!result[k2]) result[k2] = {};
keysLevel3.forEach(k3 => {
console.log(k3, 'k3');
const keysLevel4 = Object.keys(data[k1][k2][k3]);
if (!result[k2][k3]) result[k2][k3] = {};
keysLevel4.forEach(k4 => {
if (!result[k2][k3][k4]) result[k2][k3][k4] = {};
result[k2][k3][k4][k1] = data[k1][k2][k3][k4];
})
})
})
});

return result;
};
ppppppp123
2022-03-25 16:34:13 +08:00
木材厂是哪个?
heyOhayo
2022-03-25 17:24:35 +08:00
找个厂上班吧。。。
lee1997
2022-03-25 19:29:59 +08:00
v2 的回复也变得低龄化了吗?
别人学习的问题,好好回复不就行了,不懂可以不回,嘲笑别人可以满足你的优越感?
《请尽量让自己的回复能够对别人有帮助》
keith1126
2022-03-25 20:31:27 +08:00
lee1997
2022-03-25 21:15:40 +08:00
@keith1126 你要求每一个人提问前先掌握这些东西? op 已经 show code ,问题也很简单,难道还不够是吗,你的意思是问题没提好应该进厂吗
paradoxs
2022-03-25 21:26:59 +08:00
说实在的,让后端重新给你处理一下,比你在这里琢磨更快。

后端返回这种格式的数据是很简单的。
keith1126
2022-03-25 21:41:01 +08:00
@lee1997 #16

我什么也没说啊……你是不是认错了,我只是贴出一个《提问的智慧》,你觉得楼主做得符合这个指南,那就没事呗
learningman
2022-03-25 21:58:59 +08:00
@lee1997 楼主这不像是问问题,这都是最基本的操作,不好说有什么问的必要。
像是什么呢?代为完成个人任务。
这可不受欢迎。
lee1997
2022-03-26 08:57:05 +08:00
@keith1126 😅 你回复我,让我以为 op 没有做到「提问的智慧」,所以就可以被嘲笑进厂呢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842804

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX