javascript - Vue.js 2 : How to filter array without mutation?

标签 javascript laravel-5 filter vuejs2

我有一个非常简单的 Laravel/Vue js 网站,我有一个我想要过滤的产品列表。

const app = new Vue({
el: '#main-content',
data: {
    forfaits: window.forfaits,
},
methods: {
   filterData: function (val) {
        console.log(val)
        this.forfaits = this.forfaits.filter(item => {
          return item.internet >=val[0] && item.internet <= val[1] ;
      });
      return this.forfaits;
      
  }

HTML

 <div class="product-item offre" v-for="forfait in forfaits">
 .....
 ..... 
 .....

在这种情况下它可以工作,但原始产品数组(forfaits)发生了变化。 如何在不改变原始值的情况下进行过滤?

最佳答案

您想要有两个属性:

  1. 包含所有未过滤项目的真实来源属性,用户界面永远不会使用该属性。
  2. 具有要显示的实际列表的计算机属性,如果没有过滤器,则随时返回完整列表;如果有过滤器,则返回过滤后的列表。这就是您将 UI 绑定(bind)到的内容。

你不需要任何方法;计算属性将随着过滤器的更改而自动更新。

关于javascript - Vue.js 2 : How to filter array without mutation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46475778/

相关文章:

javascript - 如何从 Ember 中的夹具数据中获取随机值

表单的 Javascript 函数不与文本内容一起显示

javascript - Laravel - 消息 Toastr,错误或无效输入字段

php - 如何使用 Laravel 查询生成器跨表选择多个列?

symfony - Sonata Admin Bundle 仪表板过滤器实体来自角色和 DDBB 权限

java utillogging在属性文件中配置过滤器

javascript - 如果声明不起作用 - 有什么想法吗?

javascript - 表排序器下载为 csv

php - 如何从 laravel 5 中的两个相关表中获取数据

javascript - 使用 Angular "number"过滤器键入时,如何在输入字段中使用千位和小数分隔符格式化字符串?