Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用子属性筛选所有父对象_Javascript_Arrays_Filter_Lodash - Fatal编程技术网

Javascript 使用子属性筛选所有父对象

Javascript 使用子属性筛选所有父对象,javascript,arrays,filter,lodash,Javascript,Arrays,Filter,Lodash,我正试图深入研究JavaScript和 遇到了一个独特的场景,其中数据以一种方式显示,但显示依赖于指示父对象组织的子属性。(*这有一个术语吗?) 如何呈现这些数据,以便按“表格”进行排列。也许这与其说是逆转数据,不如说是建立某种关系 结果应该是一个克隆。不改变原始数据 纯JavaScript或u.lodash 一个好的答案将建议操作数据的方法,以便可以用forms.name表示数据 极好的答案将演示如何(显示代码)使用forms.name操作数据 给定此方法中提供的原始数据 parent : {

我正试图深入研究JavaScript和
遇到了一个独特的场景,其中数据以一种方式显示,但显示依赖于指示父对象组织的子属性。(*这有一个术语吗?)

如何呈现这些数据,以便按“表格”进行排列。也许这与其说是逆转数据,不如说是建立某种关系

结果应该是一个克隆。不改变原始数据

纯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)您应该共享您已经尝试过的代码!:)