push()
往数组最后⾯添加⼀个元素,成功返回当前数组的长度pop()
删除数组的最后⼀个元素,成功返回删除元素的值shift()删除数组的第⼀个元素,成功返回删除元素的值unshift()往数组最前⾯添加⼀个元素,成功返回当前数组的长度
splice()
有三个参数,第⼀个是想要删除的元素的下标(必选),第⼆个是想要删除的个数(必选),第三个是删除 后想要在原位置替换的值sort()sort() 使数组按照字符编码默认从⼩到⼤排序,成功返回排序后的数组reverse()reverse() 将数组倒序,成功返回倒序后的数组filter filter() ⽅法创建⼀个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。concat concat() ⽅法⽤于连接两个或多个数组。该⽅法不会改变现有的数组
slice slice() ⽅法可从已有的数组中返回选定的元素。该⽅法并不会修改数组,⽽是返回⼀个⼦数组Vue 深度监听(watch 的deep :true )造成新旧值相同
watch 的基本使⽤⽅法
watch:{
watchData: function  (value, oldValue) {
console.log(value, oldValue)
}
},以上情况针对的是简单数据类型,⽐如数字,字符串,布尔类型等。若遇到复杂类型,如对象、数组,就需要使⽤深度监听watch 的深度监听
背景:普通的监听只能监听简单类型,如果需要监听某个对象的某个或者某⼏个属性,亦或者是监听数组中的某个元素变化,就需要使⽤深度监听
watch:{
newTableData: {
handler: function  (value, oldValue) {
console.log(value, oldValue)
},
deep: true
}
},
使⽤上⾯的语法,会造成oldValue 的值在每次newTableData 变化时,都和value 保持⼀致,变成当前最新的值,失去了oldValue 的作⽤原因:
vue 官⽅解释是:在变异 (不是替换) 对象或数组时,旧值将与新值相同,因为它们的引⽤指向同⼀个对象/数组。Vue 不会保留变异之前值的副本。
Tips :变异和替换
变异
替换不会改变原数组,但总是返回⼀个新数组
解决⽅法使⽤序列化和反序列化  将计算属性和侦听器搭配
使⽤,
vue json字符串转数组
    1.⾸先将需要侦听的属性通
过JSON.parse 和stringfy 进⾏深拷贝,    2.然后⽤侦听器去侦听计算属性,这样就可以得到原来的旧值了
data: () {
return {
// 数据为复杂类型
tableAll:{
tableData:[]
}
}
},
computed:{
// 使⽤计算属性进⾏深拷贝
newTableData(){
return JSON.stringify(this.tableAll.tableData)  }
},
watch:{
// 监听拷贝后的数据
newTableData: {
handler: function (value, oldValue) {
let obj = JSON.parse(value);
let obj2 = JSON.parse(oldValue);
console.log(obj, obj2)
},
deep: true
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。