Javascript 使用子属性筛选所有父对象
我正试图深入研究JavaScript和Javascript 使用子属性筛选所有父对象,javascript,arrays,filter,lodash,Javascript,Arrays,Filter,Lodash,我正试图深入研究JavaScript和 遇到了一个独特的场景,其中数据以一种方式显示,但显示依赖于指示父对象组织的子属性。(*这有一个术语吗?) 如何呈现这些数据,以便按“表格”进行排列。也许这与其说是逆转数据,不如说是建立某种关系 结果应该是一个克隆。不改变原始数据 纯JavaScript或u.lodash 一个好的答案将建议操作数据的方法,以便可以用forms.name表示数据 极好的答案将演示如何(显示代码)使用forms.name操作数据 给定此方法中提供的原始数据 parent : {
遇到了一个独特的场景,其中数据以一种方式显示,但显示依赖于指示父对象组织的子属性。(*这有一个术语吗?) 如何呈现这些数据,以便按“表格”进行排列。也许这与其说是逆转数据,不如说是建立某种关系 结果应该是一个克隆。不改变原始数据 纯JavaScript或u.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
到目前为止,我已经尝试过:
我根据“parent”对象中forms.name的长度执行for循环。
将每个forms.name推入一个新数组。
使用lodash uniq仅返回唯一(消除阵列中的重复数据)
从那时起,我想必须有一种方法再次循环通过父级,创建一个新数组,其中每个子级(childOne、childTwo等)都添加到唯一列表中的每个form.name下
但是我仍然需要返回“enabled”属性
必须有更好的办法吗?
我读了一些关于关系数据库的书。
有没有这样的代码,我就不必重新发明轮子了?我玩了你的代码,结果是:
var父项={
childOne:{
坎希德:没错,
canStop:错,
表格:[
{name:'pathway 1',enabled:true},
{name:'pathway 2',enabled:false},
{name:'pathway 3',enabled:false}
]
},
孩子二:{
坎希德:没错,
canStop:错,
表格:[
{name:'pathway 1',enabled:true},
{name:'pathway 2',enabled:false},
{name:'pathway 5',enabled:false},
{name:'pathway 7',enabled:false}
]
}
};
var newParent={};
//恐惧来了!
Object.keys(parent.map)(函数(child,index1){
var forms=parent[child]['forms'];
Object.key(forms).map(function(path,index2){
var pw_name=形式[路径][“名称];
newParent[pw_name]=newParent[pw_name]|{};
newParent[pw_name][child]={“enabled”:forms[pathway][“enabled”]};
});
});
//输出
console.log(newParent)代码>您应该共享您已经尝试过的代码!:)