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: []
}
}

让后端按要求返回数据

别搞 IT 了吧,找个厂打螺丝吧

function getCustomData(a, b) {
let data = {}
for (let item in list) {
for (let key in listitem[b]) {
data[key] = {
...data[key],

}
}
}
return data
}
console.log(getCustomData('a', 'big'))

用 proxy 最方便。

絮我直言,为什么一个 map/dict 的变量是 list

看以往发帖记录,应该木材厂😂

假设你用的是 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')
}
}

找个场,剪视频吧

哈哈哈哈😂你的工资是由 V 友支撑起来的吗?

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(datak1);
if (!result[k2]) result[k2] = {};
keysLevel3.forEach(k3 => {
console.log(k3, 'k3');
const keysLevel4 = Object.keys(datak1[k3]);
if (!resultk2) resultk2 = {};
keysLevel4.forEach(k4 => {
if (!resultk2[k4]) resultk2[k4] = {};
resultk2k4 = datak1k3;
})
})
})
});

return result;
};

木材厂是哪个?

找个厂上班吧。。。

v2 的回复也变得低龄化了吗?
别人学习的问题,好好回复不就行了,不懂可以不回,嘲笑别人可以满足你的优越感?
《请尽量让自己的回复能够对别人有帮助》

#14
《提问的智慧》

github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way/blob/main/README-zh_CN.md

你要求每一个人提问前先掌握这些东西? op 已经 show code ,问题也很简单,难道还不够是吗,你的意思是问题没提好应该进厂吗

说实在的,让后端重新给你处理一下,比你在这里琢磨更快。

后端返回这种格式的数据是很简单的。

#16
我什么也没说啊……你是不是认错了,我只是贴出一个《提问的智慧》,你觉得楼主做得符合这个指南,那就没事呗

楼主这不像是问问题,这都是最基本的操作,不好说有什么问的必要。
像是什么呢?代为完成个人任务。
这可不受欢迎。

😅 你回复我,让我以为 op 没有做到「提问的智慧」,所以就可以被嘲笑进厂呢

呵呵,这也不至于嘲笑进厂这种地步吧

首先这问题也太简单了,就是一个 js 对象里面的元素查看的问题。以后如果大家都把最简单的问题拿来问,比如 hello,world 级的问题拿来问,这不是好事。我认为但凡把书好好看看,把学习视频学习下,不至于这么问。

其次上面的那个 “v2 的回复也变得低龄化了吗?
别人学习的问题,好好回复不就行了,不懂可以不回,嘲笑别人可以满足你的优越感?
《请尽量让自己的回复能够对别人有帮助》” 的指责,没看出他的“回复”对楼主有帮助,也没看出他的“回复”对非楼主有帮助 ,所以,这是一个“自己做不到的人指责别人做不到”?

你的回复...对他有什么帮助???

???

虽然这个题确实傻

但 v 站一直以来又嘲笑新人的“传统”,这很不好

我当年也问过很多傻问题,这一路走来,也确实不易

谁都不是娘胎出来就带着一个 CS 学位的,还请某些人手下留情,积点口德比较好

嘲笑是不对,
但随便问问题就是对的?
你也知道这问题“傻”,
楼主自己也知道这问题“傻”,(看楼主的标题)
为什么还要问这样的问题?
浪费大家时间?

像楼主这样的明知道不是正确的做法还来做的,为什么不能嘲笑?真的想好好解决问题,要么好好自学,要么花点成本现实在用”钞能力“来解决(找个老师或者培训班或者专人指导),现在搁这是打算自己不努力来白嫖?

笑了。这么多人说楼主傻的,结果只有八楼能给一个合适的答案,其他的写法都很累赘

首先我感觉这个应该由后端来处理。
其次如果你处理的话,这能 each 遍历或者 filter 过滤。 没有什么好办法。
最好还是由后端来处理。

问题感觉没有描述很清楚,传入 a big 是啥意思呢,可以更详细一点描述,方便解决问题

发表一些感触,看到楼主问题也想到曾经自己也啥都不懂,学电子专业出身,代码也是照着书一点点学,一点点验,知道一开始的不容易。现在工作了几年后看到 V2 上还是氛围那么好,程序员是一个很单纯的群体,没有弯弯绕绕,大部分争执也在于论技术,挺温暖的一个群体

活捉嘤嘤怪

我的帮助体现在改善环境,别动不动就开始嘲笑。那你的回复对我有什么帮助呢?

最后说一句,楼主这个帖子对我挺有帮助的,让我 b 了这些人。避免我以后发帖得到的回复都是嘲笑劝退的消极评论😅

???

你除了放了个地图炮你改善什么了?

???突然疑惑

你想改善环境难道不应该从自己认真回答贴主所询问的问题开始吗?

???

网上很多这样的网民,自己站在道德高点,抨击别人,满足自己的”道德欲望“。。。

如果真的让他像雷锋一样无私奉献,他会干么?

#2 有点儿复杂,不过还是写出来了。

var getAttr = function (obj, paths) {
let value = obj;
for (let i = 0; i < paths.length; i++) {
value = value[paths[i]];
}
return value;
};

var rebuild = function (dict, paths) {
// key: email, qq
const pairs = Object.keys(dict).map((key) => {
const obj = getAttr(dict[key], paths);
return [key, obj];
});
console.log("----", pairs);

return pairs.reduce((merged, prev) => {
// prev: ['email', {'rule', 'isShow', extends}]
// merged: ['rule', {'email', 'qq'}]

console.log("--- prev", prev);
Object.entries(prev[1]).forEach(([k, v]) => {
merged[k] = merged[k] || {};
mergedk] = v;
});
return merged;
}, {});
};

// TESTING:
getAttr(list, ["email", "a", "big", "isShow"]); // true
rebuild(list, ["a", "big"]);
// {
// rule: {
// email: ["abig"],
// qq: ["abigqq"],
// },
// isShow: {
// email: true,
// qq: true,
// },
// extends: {
// email: [],
// qq: [],
// },
//