从forEach把[1,2,3]改写成[2,2,2]说起

时间:2021-2-20 作者:admin

forEach() 方法对数组的每个元素执行一次提供的函数

blog.csdn.net/ZhengKehang…

那怎样用forEach把[1,2,3]改写成[2,2,2]

错误用法

[1,2,3].forEach(item=>{
       item=2
   })

为什么这样不行

因为[1,2,3]中的每一项的数据类型都是基本类型 这样就相当于 在栈中又新开辟了一个空间 item:2 这是引用 【改变a引用并不会对b引用造成影响,然而改变数组对象可以 】
参考 基本数据类型&引用数据类型
正确用法

 [1,2,3].forEach((item,index,self)=>{
      self[index]=2  //因为改变了数组对象的值
   })

其他用法for循环,map等

[1,2,3].map(item=> 3)

在vue中的应用
在data中声明一个对象如果要响应式的更改这个对象中的某个属性 那么这个属性要在对象中提前声明
forEach响应式应用
错误用法【数组更改无法响应式监听】vue并不是不能监听数组中的原始类型值,而是太耗性能,所以不去监听数组中的原始类型。

    new Vue({
        el: '#app',
        data() {
            return {
                arr: [1, 1]
            }
        },
        create() {
            this.arr.forEach((item, index, self) => {
                self[index] = 2
            })
        }
    })

正确用法

    new Vue({
        el: '#app',
        data() {
            return {
                arr: [1, 1]
            }
        },
        create() {
            this.arr.forEach((item, index, self) => {
                this.$set(this.arr, index, 2)
            })
        }
    })

forEach 其他注意事项

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。