看到大佬的文章,忍不住记录一下,巩固一下记忆;url:juejin.cn/post/684490…
Array.prototype.forEach
-
特点
-
没有返回值
-
可以改变自身数据
仅引用类型,基本类型不可改变 -
不可跳出循环
数据类型:
NumberBooleanundefinedObjectFunctionStringNull
基本类型:NumberBooleanStringundefinednull
引用类型:ObjectFunction -
-
示例
let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; arr.forEach(item => { item.a ++; }) console.log(arr) // [{a: 2}, {a: 3}, {a: 4}, {a: 5}] ----------------------------------------------------------------------------------------------- let arr = [1, 2, 3, 4]; arr.forEach(item => { item ++; }) console.log(arr) // [1, 2, 3, 4]
Array.prototype.map
- 特点
- 会新建一个数组,需要
return来返回指定内容 - 它返回数组的
length和原数组一致,若没有retrun的话会是[ undefined, undefined ] - map 不会改变原数组,不严谨:不会改变基本类型的数组,引用类型会被改变(不建议)
- 会新建一个数组,需要
- 示例
let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; let arr1 = arr.map((item, index, arr) => { // item: 当前循环到的对象 {a:1} -> Object // index: 数组当前的下标 0 -> Number // arr: 当前数组 [{a: 1}, {a: 2}, {a: 3}] -> Array return item.a }) console.log(arr1) // [1, 2, 3, 4] ------------------------------------------------------------------------------------- let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; let arr1 = arr.map((item, index, arr) => { item.a++ if (item > 3) return item }) console.log(arr1) // [undefined, undefined, 4, 5]
Array.prototype.filter
- 特点
- 创建新数组,需要
return,不会改变基本类型的原数组,引用类型还是会改变(不建议) - 返回
return的信息,和map不同之处在于length不会一致,只会返回return的信息 - 注意
return只会返回当前item,因为它只会判断return的是Boolean
- 创建新数组,需要
- 示例
let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; let arr1 = arr.filter((item, index, arr) => { // item: 当前循环到的对象 {a:1} -> Object // index: 数组当前的下标 0 -> Number // arr: 当前数组 [{a: 1}, {a: 2}, {a: 3}] -> Array if (item.a > 2) return true; }) console.log(arr1) // [{a: 3}, {a: 4}]
Array.prototype.sort
- 特点
- 排序:可以把一个数组的数字或者字母按钮顺序排列
- 会直接改变原数据,直接对原数据进行排序,但是会返回一个新的数组
// 完善中 !!