如何在 Vue.js 中过滤数组和循环 V-for

Posted

技术标签:

【中文标题】如何在 Vue.js 中过滤数组和循环 V-for【英文标题】:How to filters array and loop V-for in Vue.js 【发布时间】:2020-11-07 20:30:22 【问题描述】:

我正在尝试使用 Vue.js 循环数组级别,我可以使用函数 forEach 获取响应 json,例如:

  let filters = []
            const array = response.data
            array.forEach((element) => 
               filters.push(element)
            )
        

然后将数据存储在状态中,有任何方法可以按类型过滤,然后以某种方式循环数据以呈现选择、数据...等。在 Vue.js 中使用 V-for?

我的 json 文件:

     [
  
    'type': 'filter',
    'datatype': 'str',
    'data': [
      
        'var_name': 'Gender',
        'options': [
          'Male',
          'Female'
        ]
      
    ]
  ,
    
      'type': 'filter',
      'datatype': 'date',
      'data': [
        
          'var_name': 'From',
          'options': []
        
      ]
    ,
    
      'type': 'range',
      'datatype': 'date',
      'data': [
        
          'var_name': 'From',
          'options': []
        ,
        
          'var_name': 'To',
          'options': []
        
      ]
    
  ]

【问题讨论】:

【参考方案1】:
<div v-for="filter in filters">... </div>
computed: 
    filters() 
        return this.data.filter(item => item.type === 'filter')
    

【讨论】:

【参考方案2】:

您可以在 .vue 文件中使用以下代码。

    将上述过滤器数组保存到 vue 文件中的数据变量中。

    data() 
       return 
          filters: []
       
    
    
    const array = response.data;
    
    array.forEach((element) => 
       this.filters.push(element);
    )
    

    html 模板中使用 v-for,如下所示。

    <template v-for="oneItem in filters.filter(item => item.type == 'filter')"> 
    </template>
    

【讨论】:

我建议将此过滤后的列表包装在计算属性中,它们会被缓存,只要您不更改原始列表,这将使您的代码更快。

以上是关于如何在 Vue.js 中过滤数组和循环 V-for的主要内容,如果未能解决你的问题,请参考以下文章

来自对象键和嵌套数组的 Vue.js v-for 循环

Vue.js v-for 循环绑定数组中的项目对象并在更改时更新

Vue.js 在 v-for 循环中访问嵌套对象

使用 p 标签的嵌套 v-for 循环在 Vue.js 中不起作用

Vue.js 循环语句

Vue.js v-for 循环遍历数组不起作用(非零长度的零元素)