使用子属性过滤所有父对象

时间:2018-05-01 16:48:09

标签: javascript arrays filter lodash

我试图深入研究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

到目前为止,我已尝试过:

我根据" parent"中的forms.name的长度做了一个for循环。宾语。 将每个forms.name推送到一个新数组中。 使用lodash uniq只返回唯一(重复数组)

从那里开始,我一直认为必须有一种方法可以再循环通过父项,创建一个新数组,其中每个子项(childOne,childTwo等)都添加到唯一列表中的每个form.name下。

但是我仍然需要返回"启用"属性。

UGGGG必须有更好的方法吗? 我读了一些关于关系数据库的东西。 是否有类似的代码,我不必重新发明轮子?

1 个答案:

答案 0 :(得分:-1)

我玩了你的代码并最终得到了这个:

SELECT ... WHERE id = ...

如果您想要我添加内容,请随意发表评论。

无论如何,我希望它有所帮助!