一、从Vue数组中删除某个元素
Vue数组中删除某个元素是比较简单的,可以用splice()方法实现,但需注意每次删除后都需要实时更新Vue视图。
<template> <div> <p v-for="(item, index) in arr" :key="index"> {{ item }} <button @click="removeItem(index)">删除</button> </p> </div> </template> <script> export default { data() { return { arr: [1, 2, 3, 4, 5, 6] } }, methods: { removeItem(index) { this.arr.splice(index, 1); } } } </script>
二、Vue删除数组一项并更新
在Vue中通过删除数组一项,需要及时更新视图,可以使用Vue.$set()方法实现。实现过程为:先将要删除的元素下标取出来,然后利用splice删除,最后使用Vue.$set更新Vue视图。
<template> <div> <p v-for="(item, index) in arr" :key="index"> {{item.name}} - {{item.age}} <button @click="removeItem(index)">删除</button> </p> </div> </template> <script> export default { data() { return { arr: [{name: 'Tom', age: 18}, {name: 'Jerry', age: 20}, {name: 'Lucky', age: 22}] } }, methods: { removeItem(index) { this.arr.splice(index, 1); this.arr.forEach((item, i) => { this.$set(this.arr, i, item); }); } } } </script>
三、Vue删除数组中的某个对象
假设数组中为对象数组,则删除某个元素,则需要利用索引来删除对象,具体实现方法与删除数组元素相同。
<template> <div> <p v-for="(item, index) in arr" :key="index"> {{item.name}} - {{item.age}} <button @click="removeItem(index)">删除</button> </p> </div> </template> <script> export default { data() { return { arr: [{name: 'Tom', age: 18}, {name: 'Jerry', age: 20}, {name: 'Lucky', age: 22}] } }, methods: { removeItem(index) { this.arr.splice(index, 1); this.arr.forEach((item, i) => { this.$set(this.arr, i, item); }); } } } </script>
四、Vue删除数组元素的方法
除了splice()方法以外,还有pop()、shift()、 unshift()、slice()等方法可以删除数组元素,需要根据具体业务需求选择。
// 使用pop()删除数组尾部元素 arr.pop(); // 使用shift()删除数组头部元素 arr.shift(); // 使用unshift()在数组头部插入一项 arr.unshift(newElement); // 使用slice()截取指定区间内的元素 arr.slice(start, end);
五、Vue删除数组中的一条数据
Vue中可以用filter()方法删除数组中符合指定条件的元素,删除之后通过$set()方法更新视图。
<template> <div> <p v-for="(item, index) in arr" :key="index"> {{item.name}} - {{item.age}} <button @click="removeItem(item)">删除</button> </p> </div> </template> <script> export default { data() { return { arr: [{name: 'Tom', age: 18}, {name: 'Jerry', age: 20}, {name: 'Lucky', age: 22}] } }, methods: { removeItem(item) { this.arr = this.arr.filter(elem => elem !== item); this.arr.forEach((item, i) => { this.$set(this.arr, i, item); }); } } } </script>
六、Vue删除数组中的元素
除了使用splice()方法以外,还可以使用delete运算符或者Vue.delete()方法删除数组中的元素。
// 使用delete运算符 delete arr[index]; // 使用Vue.delete()方法 Vue.delete(arr, index);
七、Vue删除数组某一项
除了直接修改数组以外,还可以通过新建一个数组,将不需要删除的元素添加进去,实现保留指定元素,删除其他元素的效果。
<template> <div> <p v-for="(item, index) in newarr" :key="index"> {{item}} </p> </div> </template> <script> export default { data() { return { arr: [1, 2, 3, 4, 5, 6], index: 2, newarr: [] } }, mounted() { this.newarr = this.arr.filter((item, index) => index !== this.index); } } </script>
八、Vue删除数组移除指定元素
与上述保留指定元素的方法相反,此处需要将指定元素以外的元素保留下来。
<template> <div> <p v-for="(item, index) in newarr" :key="index"> {{item}} </p> </div> </template> <script> export default { data() { return { arr: [1, 2, 3, 4, 5, 6], index: 2, newarr: [] } }, mounted() { this.newarr = this.arr.filter((item, index) => index === this.index); } } </script>
九、Vue删除数组空白元素
空白元素指的是数组中的空值、null、undefined等。可以使用filter()方法将数组中的空白元素过滤出来。
<template> <div> <p v-for="(item, index) in newarr" :key="index"> {{item}} </p> </div> </template> <script> export default { data() { return { arr: [1, null, 3, undefined, 5, '', 7], newarr: [] } }, mounted() { this.newarr = this.arr.filter(item => item !== null && item !== undefined && item !== ''); } } </script>
总结
Vue中删除数组元素的方法有很多种,主要包括splice()方法、pop()、shift()、unshift()、slice()等,需要根据具体业务需求来选择。在删除元素后,一定要注意即时更新Vue视图。