2016-07-30 107 views
1

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

我觉得很难查询某个孩子。

例如,这里是数据。

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

以优雅的方式,我希望能够找到基于父母名称和子名称的对象。

家长:苏珊 儿童:乔

这是我怎么会做3种查询我想在C#中做的

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') 

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

parent.children.name == '乔'

任何帮助将不胜感激!

回答

1

.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')); 
+0

一些工作得很好,谢谢! – Proximo

+0

但他说他只想跟父母苏珊找到孩子乔,而不是任何父母。 – 2016-07-30 16:53:09

+0

@torazaburo:他已经知道如何将儿童查询与匹配父母的姓名相结合,所以我没有在我的回答中包括这一点 – Bergi