一、for循坏和forEach循坏的性能及
for循环是最常规最通用的一种循环遍历方法,map、fiter等都是可以通过for循环完成的。
forEach方法是一个高阶函数,会引入额外的函数调用开销。
注意:这种微小的性能差异通常在大多数应用中并不明显,除非在处理非常大的数据集时才可能显现出来。在实际开发中,应该优先考虑代码的可读性和维护性,而不是过度关注微小的性能差异。
由于数组较小时差别非常的小差异所以我们定义一个比较大的数组.通过startTime和endTime计算出for循环的求和消耗时间
for循坏所用时长
forEach所用时长
二、map()方法
map() 方法是数组原型的一个函数,对数组遍历不破坏原数组,将会创建一个新数组,按照原始数组元素顺序依次执行给定的函数,map方法非常适合用于处理数组中的每个元素并生成新的数组。
语法
map(callbackFn)
map(callbackFn, thisArg)
参数
callbackFn
element 数组中当前正在处理的元素。
index 正在处理的元素在数组中的索引。
array 调用了 map() 的数组本身。
对比
没学map()之前想要数组值翻倍到一个新的数组
1.使用map()简化
2.当只想取数组的name属性时直接使用map返回arrs数组的name属性就行
3.将数组中原来的name不做任何改变,原有price:6999改为price:“6999元”,并且新增number属性值为888
4.将原数组中属性进行更换
三、filter()方法
filter()过滤方法,会对原数组中的每个元素应用指定的函数,并返回一个新数组,其中包含符合条件的元素。原数组不会受到影响。
语法
map(callbackFn)
map(callbackFn, thisArg)
参数
callbackFn
element 数组中当前正在处理的元素。
index 正在处理的元素在数组中的索引。
array 调用了 map() 的数组本身。
1.当返回值为true是输出为false则不输出
2.返回name值是将会忽然掉没有name的对象或者name为空的对象
运行结果
3.数组去重,结合indexOf方法
根据indexof()方法的值进行查找只会找到第一个相同的值返回索引
利用这个特性我们就可以去除掉数组中重复的值
四、reduce()方法
reduce() 方法对数组中的每个元素按序执行一个指定方法,每一次运行 reducer 会将先前元素的计算结果作为参数传入。
语法
reduce(callbackFn)
reduce(callbackFn, initialValue)
参数
callbackFn
prev(必填),上一次调用 callbackFn 的结果。
current(必填),当前元素的值。
index(可选),current 在数组中的索引位置。
array(可选),调用了reduce() 的数组本身。
initialValue
第一次调用回调函数时初始值。如果指定初始值,则callbackFn从数组中的第一个值作为current开始执行;如果没有指定,数组中的第一个值是prev参数的值,数组第二个值是current参数的值;如果数组是空,则抛出错误,所以在不知道数组长度情况下可以指定初始值为0,保持逻辑的严谨性。
reduce常用于求和求基
示例
1.求和
2.对数组对象处理
3.求最大值/最小值
注意的是初始值也能作为运算结果
五、every()方法
判断数组中所有元素是否满足函数中给定的条件,全部满足返回true,只要有一项不满足则返回false。
语法
every(callbackFn)
every(callbackFn, thisArg)
参数
callbackFn
element 数组中当前正在处理的元素。
index 正在处理的元素在数组中的索引。
array 调用了 every() 的数组本身。
thisArg
执行 callbackFn 时用作 this 的值。
示例
1.判断数组是否都大于0
2.判断数组对象中是否都有价格
六、some()方法
some方法和every方法基本类似,只是some方法检测数组中,只要有一个满足条件即返回true,全部不满足条件才会返回false。
语法
some(callbackFn)
some(callbackFn, thisArg)
参数
callbackFn
element 数组中当前正在处理的元素。
index 正在处理的元素在数组中的索引。
array 调用了 some() 的数组本身。
thisArg
执行 callbackFn 时用作 this 的值
示例
1.判断数组中是否有大于7的值
2.判断数组中是否有大于6000并且小于8000的值