关于数组的方法

发布于 2022-09-05 22:53:40 字数 131 浏览 38 评论 0

请教,清空数组的方法
var arr = [1,2]
arr.length = 0
arr = []
这两个方法有什么区别
我用在vue项目中,用arr = []清空数组没效果,用arr.length = 0 可以实现

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

方觉久 2022-09-12 22:53:40

你所赋值的arr本质其实是指向[1,2] 赋值[]也是一个数组所以vue的机制检测不到 但是arr.length=0这个是改变所指向的的对象 所以可以检测到
对于这个问题 vue给出了一个$set的方法
随便搜的一个 你凑合看

心凉怎暖 2022-09-12 22:53:40

总得来说 在js中 这两个方法都可以实现清空数组的功能

clipboard.png

clipboard.png

但为什么你那边arr=[],会实现不了呢 原因在于你这个是在vue项目中 不等同于普通的js数组

clipboard.png

初雪 2022-09-12 22:53:40

泻药
总共有三种方法
arr.splice(0,arr.length); 清空数组
arr = [];赋值为0;这个严格来说不算清空数组,是给数组重新赋值;
arr.length = 0.;清空数组,
至于你说的在项目中重赋值不起作用,可能是代码写错了

∞琼窗梦回ˉ 2022-09-12 22:53:40

问题一
在js中,数组属于引用类型,引用类型会开辟一块内存用来保存数据。例如你的例子:

var arr = [1,2]

内存会开辟一块地址给这个数组[1,2],变量arr实际上是指向数组[1,2]的地址,而不是像基本类型那样赋值。

同样的,将arr = [3,4],实际是让arr指向另一块内存地址,数组[1,2]如果没有变量引用它的话,会在稍后垃圾回收掉。

所以将arr = [] 也是将指针的指向一个新创建的空数组上,至于arr.length = 0,我感觉是没有改变指针的指向,而是直接将那块地址中的数组修改了,希望其他的同学解释一下。

问题二
vue文档中说明了,对于数组的数据劫持,只能监听到一些数组的方法,赋值是不能监听到的,文档在这。数组更新检测

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文