-
向数组中添加元素
// 前提声明 arr 是一个数组 arr = [1, 2, 3] arr.concat(4, [5, 6], [7]) // 生成新数组 [1, 2, 3, 4, 5, 6, 7]
-
详解数组方法
.forEach()
-
可传入两个参数,一个是必传的回调,另一个是选传的
this
值,默认undefined
,箭头函数,传入的this无效 -
回调函数有三个实参,分别是
当前值
、索引值
、原数组
,当前值和索引值不可修改,原数组可修改 -
当前值是引用类型时,可以对其内部数据进行修改,但是不可以用其他引用类型直接赋值给当前值,那样也是不可以修改的,当为普通值时就完全不支持修改了
-
索引值也是不可修改的
-
传过来的原数组可以修改,且修改后的值会保留到数组中
-
.forEach()
的返回值是undefined
,即没有返回值// 普通类型的数组 let arr = [1,2,3,4,5,6,7,8,9,10] arr.forEach((val, index, arrs) => { arrs[index] = val + 2 // arrs是数组的引用,当进行修改时,原数组会发送变化 val = val + 1 // 不会改变原数组,即对val的修改有效果但是不会被保留下来 }) // 对象数组 let arr = [ { name: '张山', age: 2 }, { name: '李斯', age: 4 } ] arr.forEach((val, index, arrs) => { // arrs[index] = val + 2 val.name = val.name + val.age // 修改会被保留 val.age = val.age * val.age val = { // 对val的修改,有效果但是不会被保留 name: val.age, age: val.name } })
个人对 .forEach() 中回调函数的理解:回调函数的三个值,传入时,被复制一份,前两个是普通数据类型时,在函数内部进行的修改,必然是不会被保留的,当使用完后,便被抛弃了,而第三个值传入的是数组,是引用类型,传进来的是对应数组的地址,故修改保留而当前第一个传入的是对象时,也是地址
-
js的数组学习笔记
最新推荐文章于 2024-08-12 23:28:23 发布