我有一个对象数组,我想根据另一个数组对其进行过滤.如果filters个对象的值只有一个,我只能使用filter,但如果filters个对象中还有一个值,则不会显示任何内容.因此,在过滤器中使用forEach,并希望返回适配值.你能帮我解释一下是什么问题吗?谢谢

预期结果:

[
    {
        "tags": [
            "madewithout__gluten",
            "madewithout__nuts",
        ],
        "metafields": "Side"
    }
]

const data = [
    {
        "tags": [
            "madewithout__gluten",
            "madewithout__nuts",
        ],
        "metafields": "Side"
    },
    {
        "tags": [
            "madewithout__gluten",
        ],
        "metafields": "Side"
    },
    {
        "tags": [
            "madewithout__nuts"
        ],
        "metafields": "Side"
    }
]

const filters = ['gluten', 'nuts'] 

const result = data.filter((v) => {
  filters.forEach((tag) => {
    if(!v.tags.includes(`madewithout__${tag}`))
      return;
  });
});

console.log(result);

推荐答案

根据您提供的数据的语义,您希望判断tags中是否包含全部filters个数据:

const result = data.filter((v) => 
    filters.every((tag) => v.tags.includes(`madewithout__${tag}`))
)

const data = [
    {
        "tags": [
            "madewithout__gluten",
            "madewithout__nuts",
        ],
        "metafields": "Side"
    },
    {
        "tags": [
            "madewithout__gluten",
        ],
        "metafields": "Side"
    },
    {
        "tags": [
            "madewithout__nuts"
        ],
        "metafields": "Side"
    }
]

const filters = ['gluten', 'nuts'] 

const result = data.filter((v) => 
    filters.every((tag) => v.tags.includes(`madewithout__${tag}`))
)

console.log(result);

Javascript相关问答推荐

如何用变量productId替换 1"

将音频记录从js发送到activx-web服务器以保存到磁盘

使用useParams路由失败

使用typeof运算符获取对象值类型-接收字符串而不是数组

如何在使用fast-xml-parser构建ML时包括属性值?

硬币兑换运行超时

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

构造HTML表单以使用表单数据创建对象数组

如何从html元素创建树 struct ?

setcallback是什么时候放到macrotask队列上的?

为什么Mutations 观察器用微任务队列而不是macrotask队列处理?

更新动态数据中对象或数组中的所有值字符串

<;img>;标记无法呈现图像

为什么在函数中添加粒子的速率大于删除粒子的速率?

OnClick更改Json数组JSX中的图像源

如何通过Axios在GraphQL查询中发送数组

Socket.IO在刷新页面时执行函数两次

Reaction即使在重新呈现后也会在方法内部保留局部值

为什么NULL不能在构造函数的.Prototype中工作

无法使用npm install安装react-dom、react和next