关于数组的方法
请教,清空数组的方法
var arr = [1,2]
arr.length = 0
arr = []
这两个方法有什么区别
我用在vue项目中,用arr = []清空数组没效果,用arr.length = 0 可以实现
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
请教,清空数组的方法
var arr = [1,2]
arr.length = 0
arr = []
这两个方法有什么区别
我用在vue项目中,用arr = []清空数组没效果,用arr.length = 0 可以实现
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
你所赋值的arr本质其实是指向[1,2] 赋值[]也是一个数组所以vue的机制检测不到 但是arr.length=0这个是改变所指向的的对象 所以可以检测到
对于这个问题 vue给出了一个$set的方法
随便搜的一个 你凑合看
总得来说 在js中 这两个方法都可以实现清空数组的功能
但为什么你那边arr=[],会实现不了呢 原因在于你这个是在vue项目中 不等同于普通的js数组
泻药
总共有三种方法
arr.splice(0,arr.length); 清空数组
arr = [];赋值为0;这个严格来说不算清空数组,是给数组重新赋值;
arr.length = 0.;清空数组,
至于你说的在项目中重赋值不起作用,可能是代码写错了
问题一:
在js中,数组属于引用类型,引用类型会开辟一块内存用来保存数据。例如你的例子:
内存会开辟一块地址给这个数组
[1,2]
,变量arr
实际上是指向数组[1,2]
的地址,而不是像基本类型那样赋值。同样的,将
arr = [3,4]
,实际是让arr
指向另一块内存地址,数组[1,2]
如果没有变量引用它的话,会在稍后垃圾回收掉。所以将
arr = []
也是将指针的指向一个新创建的空数组上,至于arr.length = 0
,我感觉是没有改变指针的指向,而是直接将那块地址中的数组修改了,希望其他的同学解释一下。问题二:
vue
文档中说明了,对于数组的数据劫持,只能监听到一些数组的方法,赋值是不能监听到的,文档在这。数组更新检测