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

·  阅读 388
从forEach把[1,2,3]改写成[2,2,2]说起

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 其他注意事项 注意:以上只有for...of才能用break终止循环

分类:
前端
标签:
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改