数组重新赋值失败

Posted taokele

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组重新赋值失败相关的知识,希望对你有一定的参考价值。

问题:

rightSelectChange:function (item) {
                let filterArr=this.selectData.filter(value=>{
                    return value.id!==item.id
                });
                this.selectData=filterArr;
                console.log(filterArr);
                console.log(this.selectData);
                this.filterData();
            },

打印结果是:this.selectData的值还是原来的值 没有改变

问题2:

let item={id:1,name:‘aaa‘},
let selectData=[{id:1,name:‘aaa‘},{id:2,name:‘bbb‘}]

let filterArr=selectData.filter(value=>{
    return value.id!==item.id;
})

selectData=filterArr;
console.log(filterArr);
console.log(selectData);

打印结果:selectData的值改变了

解析:原来以为跟数据类型的指针有关,但是问题2显示不会,

问题1是再vue中写的,后来换了一种写法

改写后

rightSelectChange:function (item) {
                this.selectData.forEach((value,index)=>{
                    if(value[this.props.key]===item[this.props.key]){
                        this.selectData.splice(index,1);
                    }
                });
                this.filterData();
            },

打印结果:this.selectData的值改变了,可能跟vue的框架有关吧

以上是关于数组重新赋值失败的主要内容,如果未能解决你的问题,请参考以下文章

Vue3使用reactive包裹数组赋值

vue3.0数组清空与重新赋值

3-变量的解构赋值

ES6解构赋值

c语言对二维数组的某一行赋值 如u8 a[20][20]; 仅对a[10]这一行赋值

javascript 使用Rest结构赋值与Rest运算符重新分配数组元素