查询JavaScript父子对象

时间:2016-07-30 08:27:51

标签: javascript arrays typescript ecmascript-6

我有一个显示父子关系的json对象。

我发现查询某个孩子非常困难。

例如,这是数据。

var parents =  [
    {
        name: 'Susan',
        children: [{
            name: 'Joe'
        }, {
            name: 'Sam'
        }, {
            name: 'Michael'
        }]
    }, 
    {
        name: 'Ted',
        children: [{
            name: 'Richard'
        }, {
            name: 'Brad'
        }]
    }
    ]

我希望能够以优雅的方式根据父名和子名找到对象。

父母:苏珊 孩子:乔

以下是我在C#中尝试做的3种查询的方法

var parentQuery = parents.filter(parent=> parent.name == 'Susan');
var childQuery = parents.filter(parent=> parent.children.name == 'Joe');
var parentChildQuery = parents.filter(parent=> parent.name == 'Susan' && parent.children.name == 'Joe')

在Javascript中,parentQuery开箱即用,令我高兴。但是childQuery搜索不起作用。由于父有一个内部数组,我不知道如何引用查询属性。如下所示。

  

parent.children.name =='Joe'

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

.children是一个数组,并且没有.name属性。也许你的意思是

之一
parents.filter(parent => parent.children[0].name == 'Joe');
parents.filter(parent => parent.children.every(child => child.name == 'Joe'));
parents.filter(parent => parent.children.some(child => child.name == 'Joe'));