Vue中splice()方法:实现对数组进行增删改的操作

 语法结构:splice(index,len,[item])
1、可以用来添加/删除/替换数组内某一个或者几个值
2、该方法会改变原始数组
index:数组开始下标       

 len: 替换/删除的长度       

item:替换的值,删除操作的话 item为空

一、删除:
index表示要删除的数组下标, len长度为1(len设置1,如果为0,则数组不变),item为空表示执行删除操作
 

<template>
  
<div id="demo">
  <h2>v-for 遍历数组</h2>
  <ul>
    <li v-for="(item, index) in persons" :key="index">
	      序号:{{index}}
	      名字:{{item.name}}
	      年龄:{{item.age}}
     <button @click="del(index)">删除</button>
    </li>
  </ul>
</div>
</template>

<script>
export default {
  data(){
    return{
        persons: [
          {name: 'Tom', age:18},
          {name: 'Jack', age:17},
          {name: 'Bob', age:19},
          {name: 'Mary', age:16}
        ]

    }
  },
  methods:{
       //删除(注意:删除的方法名不能用delete,因为delete是系统关键字)
      del(index) {
        this.persons.splice(index, 1) 
      }

  }
}
</script>

<style>

</style>

二、替换(修改):

相当于是先删除,再添加

<div id="demo">
  <h2>测试: v-for 遍历数组</h2>
  <ul>
    <li v-for="(item, index) in persons" :key="index">
	      序号:{{index}}
	      名字:{{item.name}}
	      年龄:{{item.age}}
     <button @click="update(index, {name:'张三', age: 16})">更新</button>
    </li>
  </ul>
</div>
 
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">
  new Vue({
    el: '#demo',
    data: {
      persons: [
        {name: 'Tom', age:18},
        {name: 'Jack', age:17},
        {name: 'Bob', age:19},
        {name: 'Mary', age:16}
      ]
    },
    methods: {
      //修改
      update(index, item) {
        this.persons.splice(index, 1, item)
      }
    }
  })
</script>

 

三、添加:

index下标直接设置为0,len长度也设置为0,item传入要添加的对象


<div id="demo">
  <h2>测试: v-for 遍历数组</h2>
  <ul>
    <li v-for="(item, index) in persons" :key="index">
	      序号:{{index}}
	      名字:{{item.name}}
	      年龄:{{item.age}}
    </li>
  </ul>
  <button @click="add({name: '李四', age: 18})">添加</button>
</div>
 
<script type="text/javascript" src="../js/vue.js"></script>
<script type="text/javascript">
  new Vue({
    el: '#demo',
    data: {
      persons: [
        {name: 'Tom', age:18},
        {name: 'Jack', age:17},
        {name: 'Bob', age:19},
        {name: 'Mary', age:16}
      ]
    },
    methods: {
        //添加
        add (item) {
            this.persons.splice(0, 0, item)
        }
    }
  })
</script>

附加知识点:
在v-for遍历中,都需要声明:key,那么:key的作用是什么呢?

答:vue和react都实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面。而隐藏在背后的原理便是其高效的Diff算法。vue和react的虚拟DOM的Diff算法大致相同,其核心是基于两个简单的假设:

假设1、 两个相同的组件产生类似的DOM结构,不同的组件产生不同的DOM结构。

假设2、 同一层级的一组节点,他们可以通过唯一的id进行区分。

简单的说, :key的作用主要是为了高效的更新虚拟DOM
 

最后为了方便大家的沟通与交流请加QQ群: 625787746

请进QQ群交流:【IT博客技术分享群①】:https://jq.qq.com/?_wv=1027&k=DceI0140

 

  • 7
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue实现数组增删查可以通过以下几种方式: 1. 增加:可以使用`push()`方法数组末尾添加新的元素,或者使用`splice()`方法在指定位置插入新的元素。例如,`arrList.push(6)`可以向数组末尾添加元素6,`arrList.splice(2, 0, 7)`可以在数组下标为2的位置插入元素7。 2. 删除:可以使用`pop()`方法删除数组末尾的元素,或者使用`splice()`方法删除指定位置的元素。例如,`arrList.pop()`可以删除数组末尾的元素,`arrList.splice(2, 1)`可以删除数组下标为2的元素。 3. 修改:可以直接通过下标来修改数组的值,例如 `arrList = 9` 可以将数组下标为2的值修改为9。但是需要注意的是,由于Vue的限制,直接修改数组的某个元素并不会触发视图的更新。为了解决这个问题,可以使用`Vue.set()`或`this.$set()`方法修改数组的值。例如,`Vue.set(arrList, 2, '值')`可以将数组下标为2的值修改为'值'。 4. 查询:可以使用数组的各种方法进行查询,例如`indexOf()`可以返回指定元素在数组的索引,`find()`方法可以返回满足条件的第一个元素等。 需要注意的是,当数组的长度发生变化时,Vue会自动检测到变动并更新视图。但当直接修改数组的某个元素时,需要使用`Vue.set()`或`this.$set()`方法来触发视图的更新。此外,如果对数组进行深度操作,可以使用深度克隆来确保数据真正变,例如 `tabList = JSON.parse(JSON.stringify(tabList))`。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue对象和数组增删操作](https://blog.csdn.net/weixin_43085797/article/details/120513225)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT博客技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值