繁体   English   中英

基于对象属性的数组过滤

[英]Array filtering based on properties in object

好吧,我被困在这里,我将不胜感激一些可以实现此目标的方法。

我有一个问题数组:

  questions: [
    {
      question: 'lala',
      answer: 'papa',
      categories: ['Handla']

    },
    {
      question: 'xxxx',
      answer: 'yyyy',
      categories: ['Reklamation']
    }
  ]

基于类别,我希望能够在过滤时相应列出问题。

因此,可以说我想过滤“ Handla”,我应该能够找出类别数组中匹配值“ Handla”的所有问题。

通过问题数组进行映射并使用if / else语句返回它们将起作用,但是我不确定这是最佳方法。

摘要:我想遍历所有问题并挑选出与所需类别查询匹配的对象。

请求“重新声明”时,我期望的输出应为

const desiredArray = [{
        {
          question: 'xxxx',
          answer: 'yyyy',
          categories: ['Reklamation']
        }
}]

使用阵列#过滤和检查类别( Reklamation在一例)中发现categories阵列使用阵列#包括

 const questions = [{"question":"lala","answer":"papa","categories":["Handla"]},{"question":"xxxx","answer":"yyyy","categories":["Reklamation"]}]; const result = questions.filter(({ categories }) => categories.includes('Reklamation')); console.log(result); 

尝试这个

var result = questions.filter((item) => item.categories.find((cat) => cat === 'Reklamation'))

您可以将array#filterarray.indexOf一起array.indexOf

 var data = {questions: [{question: 'lala',answer: 'papa',categories: ['Handla']},{question: 'xxxx',answer: 'yyyy',categories: ['Reklamation']}]}, category = 'Reklamation', result = data.questions.filter(({categories}) => categories.indexOf(category) > -1); console.log(result); 

我将创建一个可重用的函数,无论何时要按类别搜索,都可以调用该函数:

const filterByCategory = (questions, category) => { 
 return questions.filter(q => q.categories.includes(category))
}

filterByCategory(questions, 'Reklamation');

filter接受一个回调,如果您想保留该元素,则返回true

请查看过滤器包括文档以获取更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM