Vue中数组的变化

目录

  • ❀改变原数组的方法

  • ❀不改变原数组的方法

  • ❀动态修改数组

改变原数组的方法

push()增加
pop()移除末尾元素
等等…

示例

html

<div id="app">
        <ul>
            <li v-for="item,k in list">{{item}}</li>
        </ul>
        <input type="text" v-model="mess" />
        <button @click="add">Add</button>
        <button @click="del">Del</button>
    </div>

js

 var vm=new Vue({
        el:"#app",
        data:{
            mess:"你喜欢的水果",
            list:['apple','orange','banana']
        },
        methods:{
           add(){
                this.list.push(this.mess);  //会改变原始数组(push增加)
           },
           del(){
                this.list.pop();//会改变原始数组(尾部移除)
           }
        }
    })

效果图:
在这里插入图片描述
点击后:
在这里插入图片描述
成功~ 当然点del也能删除最后一项


不改变原数组的方法

.slice()返回取出的数据
slice(下标1,下标2)下标1~下标2
等等…

示例

html

<div id="app">
        <ul>
            <li v-for="item,k in list">{{item}}</li>
        </ul>
        <input type="text" v-model="mess" />
        <button @click="change">slice</button>
    </div>

关键代码js

//加入到methods中
	change(){
                var slice=this.list.slice(1,2);//不会改变原始数组(返回取出的数据)slice(下标1,下标2)下标1~下标2
                 console.log(slice);
           }

效果图:
在这里插入图片描述
打印出下标1·2之间的值
成功~


动态修改数组

语法: Vue的变量名.$set(数组,下标,修改后的值).
在Vue里边就用this代替

示例

html

<div id="app">
        <ul>
            <li v-for="item,k in list">{{item}}</li>
        </ul>
        <input type="text" v-model="mess" />
        <button @click="change">slice</button>
    </div>

关键代码js

	change(){
            this.$set(this.list,2,'popular')//动态修改数组
           }

效果图:
在这里插入图片描述
点击slice:
在这里插入图片描述
下标为2的值就改变了


vue中数组的变化完结~

Vue ,可以使用 `watch` 监听数组变化。但是由于 JavaScript 的限制,使用 `watch` 监听数组变化时只能监听到数组的长度变化数组内部元素的引用变化,而不能监听到数组内部元素的属性变化。 如果需要监听数组内部元素的属性变化,可以使用 Vue 提供的 `$set` 或者 `splice` 方法来修改数组,并且在修改后使用 `watch` 监听数组变化。 示例代码如下: ```html <template> <div> <ul> <li v-for="(item, index) in list" :key="index">{{ item.title }}</li> </ul> </div> </template> <script> export default { data() { return { list: [ { title: "Vue.js 实战教程" }, { title: "JavaScript 高级编程" }, { title: "Python 基础教程" }, ], }; }, mounted() { // 监听数组变化 this.$watch("list", (newVal, oldVal) => { console.log("list changed:", newVal, oldVal); }, { deep: true }); // 使用 deep 选项可以监听到数组内部元素的属性变化 }, methods: { changeTitle(index, newTitle) { // 修改数组内部元素的属性 this.$set(this.list[index], "title", newTitle); }, addBook(title) { // 使用 splice 方法添加新元素 this.list.splice(this.list.length, 0, { title }); }, }, }; </script> ``` 在上面的示例,我们使用 `$set` 方法来修改了数组内部元素的属性,并使用 `splice` 方法来添加了新元素,然后在 `mounted` 钩子使用 `watch` 监听了数组变化。注意,为了监听到数组内部元素的属性变化,我们需要将 `deep` 选项设置为 `true`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

碰磕

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

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

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

打赏作者

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

抵扣说明:

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

余额充值