Vue中数组遍历/添加元素/更新/过滤/排序操作

本文介绍了Vue中如何遍历数组(v-for)、更新数组(包括添加元素)、过滤数组以及对数组进行排序。在添加元素时,分别展示了改变和不改变原数组的方法。同时,讨论了在不想改变原数组的情况下,如何利用计算属性进行过滤和排序的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.遍历数组:v-for


<div id="app">
    <ul>
      <template v-for="(book,index) in books">
        <li>{{index}}-{{book.name}}</li>
      </template>
    </ul>
  </div>
</script>
  <script>
    var app = new Vue({
      el:'#app',
      data:{
        books:[
          {
            name:'<<VUe.js>>',
          },
          {
            name:'<<CSS>>',
          },
          {
            name:'<<Javascript>>',
          }
        ]
      },
    });
    
  </script>

在这里插入图片描述

2.数组更新


2.1 为数组添加一项

例如,给示例的数组books添加一项
改变原数组的情况
使用push()为数组添加一项

<div id="app">
    <ul>
      <template v-for="(book in books">
        <li>书名:{{book.name}}作者:{{book.author}}</li>
      </template>
    </ul>
  </div>
  <script>
    var app = new Vue({
      el:'#app',
      data:{
        books:[
          {
            name:'<<VUe.js>>',
            author:"Lihua",
          },
          {
            name:'<<CSS>>',
            author:"Xiaomig",
          },
          {
            name:'<<Javascript>>',
            author:"HanLei",
          }
        ]
      },
    });

    //方法1 使用push
     app.books.push({
       name:'<<h5>>',
       author:'Lea'
     })
  </script>

在这里插入图片描述

不改变原数组的情况
有些方法不会改变原数组,例如 filter(),concat(),slice(),他们返回一个新数组。

    //方法2 使用Vue内置的set方法
    Vue.set(app.books,3,{
      name:'<<h5>>',
      author:'Lea'
    }); 
    //注意:未导入Vue的情况下使用$set
    // app.$set(app.books,3,{
    //   name:'<<h5>>',
    //   author:'Lea'
    // })

    //方法3 使用splice
    app.books.splice(3,1,{
      name:'<<h5>>',
      author:'Lea'
    })

3.过滤


不想改变原数组,想通过一个数组的副本来做过滤或排序的显示时,可以使用计算属性来返回过滤或排序后的数组,例如

<div id="app">
    <ul>
      <template v-for="book in filterBooks">
        <li>书名:{{book.name}} 作者:{{book.author}}</li>
      </template>
    </ul>
  </div>
  <script>
    var app = new Vue({
      el:'#app',
      data:{
        books:[
          {
            name:'<<Vue.js>>',
            author:"Lihua",
          },
          {
            name:'<<CSS>>',
            author:"Xiaomig",
          },
          {
            name:'<<Javascript>>',
            author:"HanLei",
          }
        ]
      },
      computed:{
        filterBooks:function(){
          return this.books.filter(function(book){
            return book.name.match(/Java/);
          })
        },
      }
    });
    
  </script>

在这里插入图片描述

4.数组排序

<div id="app">
    <ul>
      <template v-for="book in sortedBooks">
        <li>书名:{{book.name}} 作者:{{book.author}}</li>
      </template>
    </ul>
  </div>
  <script>
    var app = new Vue({
      el:'#app',
      data:{
        books:[
          {
            name:'<<Vue.js>>',
            author:"Lihua",
          },
          {
            name:'<<CSS>>',
            author:"Xiaomig",
          },
          {
            name:'<<Javascript>>',
            author:"HanLei",
          }
        ]
      },
      computed:{
        sortedBooks:function(){
          return this.books.sort(function(a,b){
            return a.name.length < b.name.length;
          });
        }
      }
    });
  </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值