如何解决Vue使用filter过滤原始数据,并赋值给后端返回的数据改变了原始数据
一、使用filter进行数据过滤//已上按钮hadclass(index){ let res=this.changeList.filter(function(item,index,array){ return(item.status==1); });this.leftbtn = truethis.showbtn = falsethis.result[index].list= res;},点击
·
一、使用filter进行数据过滤
//已上按钮
hadclass(index){
let res=this.changeList.filter(function(item,index,array){
return(item.status==1);
});
this.leftbtn = true
this.showbtn = false
this.result[index].list= res;
},
点击已选按钮,筛选过滤状态为1的数据
//未上按钮
noclass(index){
let res=this.changeList.filter(function(item,index,array){
return(item.status==2);
});
this.showbtn = true
this.leftbtn = false
this.result[index].list= res;
},
筛选状态为二的数据
this.result[index].list= res;使用后端返回的数据赋值会改变原始数据
那么,我们该如何解决这个问题呢??
接下来就是解决的方法!!!!!!
**
使用数组深拷贝方法
**
- 这里为介绍 数组深拷贝的文字描述。
- JSON.parse() 是将字符串中的对象解析出来。
var str = "{'name':'huahua','age':'22'}";
JSON.parse(str);
var obj = {name:"hua",age: 26};
JSON.stringify(obj);
不会污染原数据,新深拷贝一个数组,使用JSON.parse(JSON.stringify(obj))不会改变原有数据
let son_one = JSON.parse(JSON.stringify(this.father))
let son_two = JSON.parse(JSON.stringify(this.father))
for (let i = 0; i < son_two .length; i++) {
if (list[i].children) {
let _list = son_two [i].children
for (let j = 0; j < _list.length; j++) {
if (_list[j].children) {
delete(_list[j].children)
}
}
}
}
使用JSON.parse(JSON.stringify(obj)会返回原来的数组数据,而不是过滤后的数据
本篇文章精彩到此!!共同一起前端开发,加油!!
欢迎关注博主!!!!!
更多推荐
已为社区贡献4条内容
所有评论(0)