使用子属性过滤所有父对象
Posted
技术标签:
【中文标题】使用子属性过滤所有父对象【英文标题】:using child property to filter all parent objects 【发布时间】:2018-10-11 17:25:08 【问题描述】:我正在尝试更深入地研究 javascript 和 遇到了一个独特的场景,其中数据以一种方式呈现,但显示依赖于指示父级组织的子属性。 (* 有这个词吗?)
如何呈现这些数据以便按“表格”排列。而且也许它不是关于反转数据,而是创建某种关系。
结果应该是一个克隆。不改变原始数据。
纯 JavaScript 或 _.lodash。
一个好的答案会建议处理数据的方法,以便它可以通过 forms.name 呈现。
一个极好的答案将演示如何(显示代码)使用 forms.name 操作数据。
鉴于此方法中呈现的原始数据。
parent :
childOne:
canHide : true,
canStop : false,
forms : [
name: 'pathway 1', enabled: true,
name: 'pathway 2', enabled: false,
name: 'pathway 3', enabled: false
]
,
childTwo:
canHide : true,
canStop : false,
forms : [
name: 'pathway 1', enabled: true,
name: 'pathway 2', enabled: false,
name: 'pathway 5', enabled: false,
name: 'pathway 7', enabled: false
]
,
我想弄清楚的是,我将如何呈现数据更像这样?
注意:child.forms.name 可能包含空格。
newParent :
pathway 1 :
childOne: enabled : true ,
childTwo: enabled : false
,
pathway 2 :
childOne: enabled : false ,
childTwo: enabled : false
,
pathway 3 :
childOne: enabled : true ,
,
pathway 5 :
childTwo: enabled : false
,
pathway 7 :
childTwo: enabled : false
,
我不完全确定数据的结构应该是这样的。
我正在努力学习更多 JavaScript。
我认为显示器的外观是这样的
Pathway 1
childOne . [checkbox] => enabled : true|false
childTwo . [checkbox] => enabled : true|false
...
Pathway 7
childTwo . [checkbox] => enabled : true|false
到目前为止我已经尝试过:
我根据“父”对象中 forms.name 的长度做了一个 for 循环。 将每个 forms.name 推入一个新数组。 使用 lodash uniq 只返回唯一的(去重数组)
从那里我在想必须有一种方法可以再次循环通过父级,创建一个新数组,其中每个子级(childOne、childTwo 等)都添加到唯一列表中的每个 form.name 下。
但是我仍然需要返回“启用”属性。
UGGGG一定有更好的办法吗? 我读了一些关于关系数据库的东西。 有没有这样的代码我不必重新发明***?
【问题讨论】:
你应该分享你已经尝试过的代码! :) 【参考方案1】:我玩过你的代码,结果是这样的:
var parent =
childOne:
canHide : true,
canStop : false,
forms : [
name: 'pathway 1', enabled: true,
name: 'pathway 2', enabled: false,
name: 'pathway 3', enabled: false
]
,
childTwo:
canHide : true,
canStop : false,
forms : [
name: 'pathway 1', enabled: true,
name: 'pathway 2', enabled: false,
name: 'pathway 5', enabled: false,
name: 'pathway 7', enabled: false
]
;
var newParent = ;
// Here comes the funk(tion)!
Object.keys(parent).map(function(child, index1)
var forms = parent[child]['forms'];
Object.keys(forms).map(function(pathway, index2)
var pw_name = forms[pathway]["name"];
newParent[pw_name] = newParent[pw_name] || ;
newParent[pw_name][child] = "enabled": forms[pathway]["enabled"] ;
);
);
// Output
console.log(newParent);
如果您希望我添加一些内容,请随时发表评论。
无论如何,我希望它有所帮助!
【讨论】:
以上是关于使用子属性过滤所有父对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在python django中获取所有父节点但过滤子节点