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: []
}
}
1
zcf0508 2022-03-25 11:15:42 +08:00 via Android
让后端按要求返回数据
|
3
pengtdyd 2022-03-25 11:32:49 +08:00 22
别搞 IT 了吧,找个厂打螺丝吧
|
4
Curtion 2022-03-25 12:02:41 +08:00 1
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')) |
5
flowerpiggy 2022-03-25 12:06:31 +08:00
用 proxy 最方便。
|
6
oneisall8955 2022-03-25 12:16:15 +08:00 via Android 2
絮我直言,为什么一个 map/dict 的变量是 list
|
8
BingoXuan 2022-03-25 12:25:35 +08:00 1
假设你用的是 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') } } |
9
superfatboy 2022-03-25 13:13:22 +08:00
找个场,剪视频吧
|
10
yousabuk 2022-03-25 13:43:47 +08:00 via iPhone
哈哈哈哈😂你的工资是由 V 友支撑起来的吗?
|
11
VagabondH 2022-03-25 16:25:08 +08:00 1
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; }; |
12
KJR5OR04CnCiWf02 2022-03-25 16:34:13 +08:00
木材厂是哪个?
|
13
heyOhayo 2022-03-25 17:24:35 +08:00
找个厂上班吧。。。
|
14
lee1997 2022-03-25 19:29:59 +08:00 6
v2 的回复也变得低龄化了吗?
别人学习的问题,好好回复不就行了,不懂可以不回,嘲笑别人可以满足你的优越感? 《请尽量让自己的回复能够对别人有帮助》 |
15
keith1126 2022-03-25 20:31:27 +08:00 2
|
16
lee1997 2022-03-25 21:15:40 +08:00 via Android
@keith1126 你要求每一个人提问前先掌握这些东西? op 已经 show code ,问题也很简单,难道还不够是吗,你的意思是问题没提好应该进厂吗
|
17
paradoxs 2022-03-25 21:26:59 +08:00
说实在的,让后端重新给你处理一下,比你在这里琢磨更快。
后端返回这种格式的数据是很简单的。 |
18
keith1126 2022-03-25 21:41:01 +08:00
|
19
learningman 2022-03-25 21:58:59 +08:00 via Android
|
21
lee1997 2022-03-26 08:57:55 +08:00 via Android
@learningman 呵呵,这也不至于嘲笑进厂这种地步吧
|
22
seakingii 2022-03-26 09:41:41 +08:00
首先这问题也太简单了,就是一个 js 对象里面的元素查看的问题。以后如果大家都把最简单的问题拿来问,比如 hello,world 级的问题拿来问,这不是好事。我认为但凡把书好好看看,把学习视频学习下,不至于这么问。
其次上面的那个 “v2 的回复也变得低龄化了吗? 别人学习的问题,好好回复不就行了,不懂可以不回,嘲笑别人可以满足你的优越感? 《请尽量让自己的回复能够对别人有帮助》” 的指责,没看出他的“回复”对楼主有帮助,也没看出他的“回复”对非楼主有帮助 ,所以,这是一个“自己做不到的人指责别人做不到”? |
23
placeholder 2022-03-26 09:49:38 +08:00 1
|
24
ericgui 2022-03-26 10:22:10 +08:00
虽然这个题确实傻
但 v 站一直以来又嘲笑新人的“传统”,这很不好 我当年也问过很多傻问题,这一路走来,也确实不易 谁都不是娘胎出来就带着一个 CS 学位的,还请某些人手下留情,积点口德比较好 |
25
seakingii 2022-03-26 11:09:22 +08:00 2
@ericgui 嘲笑是不对,
但随便问问题就是对的? 你也知道这问题“傻”, 楼主自己也知道这问题“傻”,(看楼主的标题) 为什么还要问这样的问题? 浪费大家时间? 像楼主这样的明知道不是正确的做法还来做的,为什么不能嘲笑?真的想好好解决问题,要么好好自学,要么花点成本现实在用”钞能力“来解决(找个老师或者培训班或者专人指导),现在搁这是打算自己不努力来白嫖? |
26
golangLover 2022-03-26 13:09:14 +08:00 via Android
笑了。这么多人说楼主傻的,结果只有八楼能给一个合适的答案,其他的写法都很累赘
|
27
fortunezhang 2022-03-26 14:03:38 +08:00
首先我感觉这个应该由后端来处理。
其次如果你处理的话,这能 each 遍历或者 filter 过滤。 没有什么好办法。 最好还是由后端来处理。 |
28
a852695 2022-03-26 14:26:04 +08:00
问题感觉没有描述很清楚,传入 a big 是啥意思呢,可以更详细一点描述,方便解决问题
|
29
a852695 2022-03-26 15:00:47 +08:00
发表一些感触,看到楼主问题也想到曾经自己也啥都不懂,学电子专业出身,代码也是照着书一点点学,一点点验,知道一开始的不容易。现在工作了几年后看到 V2 上还是氛围那么好,程序员是一个很单纯的群体,没有弯弯绕绕,大部分争执也在于论技术,挺温暖的一个群体
|
30
kingfalse 2022-03-26 15:48:30 +08:00 via Android
活捉嘤嘤怪
|
31
lee1997 2022-03-26 19:44:57 +08:00 via Android
@placeholder 我的帮助体现在改善环境,别动不动就开始嘲笑。那你的回复对我有什么帮助呢?
|
32
lee1997 2022-03-26 19:49:20 +08:00 via Android
最后说一句,楼主这个帖子对我挺有帮助的,让我 b 了这些人。避免我以后发帖得到的回复都是嘲笑劝退的消极评论😅
|
33
placeholder 2022-03-26 23:32:22 +08:00 3
|
34
seakingii 2022-03-27 01:05:16 +08:00 1
|
35
siteshen 2022-03-27 14:46:28 +08:00 1
#2 @pianjiao 有点儿复杂,不过还是写出来了。
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] || {}; merged[k][prev[0]] = 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: [], // }, // |
36
460881773 2022-03-28 09:15:52 +08:00
卷起来了。
|
37
Unicorns96 2022-03-28 10:25:45 +08:00 1
/**
* 菜鸡后端试着写一下 * */ function test(list, field1, field2) { let result = {}; Object.keys(list).forEach(key => { let current = list[key][field1][field2]; Object.keys(current).forEach(innerKey => { if (!result[innerKey]) { result[innerKey] = {}; } result[innerKey][key] = current[innerKey]; }) }) return result; } |
38
Unicorns96 2022-03-28 10:57:30 +08:00
不要听楼上一些人的,作为一个成熟的前端,应该学会自己处理一些简单的数据了,别啥都交给后端
|
39
dany813 2022-03-28 13:08:21 +08:00 1
建议 楼主多学习下 lodash ,做数据处理很有用
|
40
Zink99 2022-03-28 13:23:46 +08:00 1
|
41
Zink99 2022-03-28 13:42:01 +08:00
说一个看法,类似帖子见过很多次了,回复确实也是一大堆批评的,我很疑惑程序员的开源精神呢?哪怕你觉得这个问题很简单你看不上,你关掉就好了,没必要嘲讽吧?
之前在 discord python server 上见过几个程序员教小白用 git ,教他配开发环境,个人觉得真的很棒。 |
42
xiamy1314 2022-03-28 14:02:50 +08:00
众筹工资。
|