Javascript 基于嵌套数组中的值筛选数组

Javascript 基于嵌套数组中的值筛选数组,javascript,arrays,Javascript,Arrays,我有一个对象,我想根据嵌套数组是否包含某个值进行过滤 数据 { "content": [ { "text" : "#number# Tips to Get #solution#", "types" : [ "email"] }, { "text" : "Want #desiredResult#? Use

我有一个对象,我想根据嵌套数组是否包含某个值进行过滤

数据

{
  "content": [
    {
      "text" : "#number# Tips to Get #solution#",
      "types" : [ "email"]
    },
    {
      "text" : "Want #desiredResult#? Use #productName#",
      "types" : [ "ad", "email" ]
    },
    {
      "text" : "Your Search For #solution# Ends Here",
      "types" : [ "ad", "email" ]
    }
  ]
}

现在,我想根据是否存在特定值返回一个新数组。例如,如果我要按
ad
进行筛选,则只会返回最后2个条目:

广告过滤

{
  "content": [
    {
      "text" : "Want #desiredResult#? Use #productName#",
      "types" : [ "ad", "email" ]
    },
    {
      "text" : "Your Search For #solution# Ends Here",
      "types" : [ "ad", "email" ]
    }
  ]
}

我最初认为我可以使用
Array.prototype.filter()
,但我一直没能让它起作用。我认为这是因为数组是嵌套的,但我不确定如何访问它

如何筛选以仅返回类型与筛选值匹配的条目?

您可以利用和来实现所需的功能

let数据={
“内容”:[
{
“文本”:“#编号#获取#解决方案#的提示”,
“类型”:[“电子邮件”]
},
{
“文本”:“想要#desiredResult#?使用#产品名称#”,
“类型”:[“广告”、“电子邮件”]
},
{
“文本”:“您对解决方案的搜索到此结束”,
“类型”:[“广告”、“电子邮件”]
}
]
}
常量filterByType=(数据,filterBy)=>{
返回(数据| |[])。筛选器(d=>{
返回d.types.some(type=>type==filterBy)
})
}

console.log(filterByType(data.content,“ad”)
向我们展示您尝试过但无法工作的内容。不要对JavaScript对象文本使用
json
标记(或术语)。我会使用
一些
而不是
indexOf
,但这是一个很好的解决方案是的@Luísmester,它也绝对有效。但不是再次有条件检查
!==-1
我更喜欢默认提供布尔值的东西。