首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >深入研究对象以满足条件并返回高于级别的属性

深入研究对象以满足条件并返回高于级别的属性
EN

Stack Overflow用户
提问于 2018-06-03 01:29:53
回答 2查看 91关注 0票数 1

考虑以下对象

代码语言:javascript
复制
{
"objects": [
    {
        "body": "body 1", 
        "title": "Jolene", 
        "authors": [{
            "name": "Dolly"
        },
        {
            "name": "John"
        }]
    },
    {
        "body": "body 2", 
        "title": "Jolene", 
        "authors": [{
            "name": "Dolly Parton"
        }]
    }
]
}

我的目标是验证每个对象的authors属性,如果其中一个作者的name满足条件,我希望它返回该对象的body

例如,我希望呈现对象的body内容,该对象至少有一个authors name等于"John"。在这种情况下,应该返回"body 1"

我尝试过映射和过滤,但我不知道如何深入每个对象来验证该条件,然后返回一个位于更高级别的属性。

请帮帮我!非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-03 01:37:33

您可以使用find搜索第一个匹配项。使用some检查是否至少有一个名称匹配。

代码语言:javascript
复制
let obj={"objects":[{"body":"body 1","title":"Jolene","authors":[{"name":"Dolly"},{"name":"John"}]},{"body":"body 2","title":"Jolene","authors":[{"name":"Dolly Parton"}]}]}

let toSearch = "John";
let result = (obj.objects.find(o => o.authors.some(x => x.name === toSearch)) || {body: ""}).body;

console.log(result);

如果需要多个匹配项,可以使用filtermap

代码语言:javascript
复制
let obj={"objects":[{"body":"body 1","title":"Jolene","authors":[{"name":"Dolly"},{"name":"John"}]},{"body":"body 1.5","title":"Jolene","authors":[{"name":"Dolly"},{"name":"John"}]},{"body":"body 2","title":"Jolene","authors":[{"name":"Dolly Parton"}]}]}

let toSearch = "John";
let result = obj.objects.filter(o => o.authors.some(x => x.name === toSearch)).map(o => o.body);

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2018-06-03 01:37:16

这看起来可能有点小问题,但您肯定得到了解决方案

代码语言:javascript
复制
var obj = {
"objects": [
    {
        "body": "body 1", 
        "title": "Jolene", 
        "authors": [{
            "name": "Dolly"
        },
        {
            "name": "John"
        }]
    },
    {
        "body": "body 2", 
        "title": "Jolene", 
        "authors": [{
            "name": "Dolly Parton"
        }]
    }
]
}

obj["objects"].forEach(item=>{
  if(item.authors){
		item.authors.forEach(items=>{
          if(items.name == 'Dolly') console.log(item['body'])
      })
	}
})

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50659470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档