0%

数组方法哪些有副作用,一目了然!

作者:李旭光
引用请标明出处

前言

今天一个小兄弟微信给我发了个消息,说是今天面试,面试官问了个比较基础的问题,没答好,我就问他问了什么,他说,数组有哪些方法会改变原来的值,他说他就说了3、4个,还不确定对不对,我想了想说其实列个表就很容易记住了,于是便有了下面这个表格。

关于数组的那些方法

其实上面的问题:

数组有哪些方法会改变原来的值

现在有个词挺火的,叫做纯函数,什么是纯函数呢,就是没有副作用,什么是没有副作用呢,就是结果是幂等的,等等….怎么越来越绕,简单来说,就是这个函数干几次都是一样的结果,出了函数就不会有任何影响,他就像一台加工机器,输入原料,输出产品,没有任何其他输出材料,比如废气之类影响大气的东西。好吧,你不明白也没关系,反正我对上面这个问题的理解就变成了

数组的哪些方法是没有副作用的。

要说有哪些方法是有副作用,首先你得知道有哪些方法,

比如,push,pop,shift,unshift,splice 这些别跟我说你不知道,这些都是常用的数组操作,出栈入栈,
还有什么呢,数组的排序啊,比如sort,reverse,还有一个用的不多,fill是用一个固定值填充数组的起始元素到终止元素,这些呢都是在原数组上进行操作,所以肯定是影响数组的值的,也就是说有副作用的。

那么哪些没有副作用呢,简单说其他的都没有,
啥!?,是的,其他的都没有。。。所以记得上面这些就好了呀,怎么样,是不简单。

那还剩下啥?

  • concat 返回的是心数组,
  • join 返回的是字符串,
  • indexOf和lastIndexOf返回的是索引,
  • slice 返回的是切割后的新数组,别把它和splice混淆了哈,
  • entries 返回一个新的Array Iterator对象,
  • keys 返回一个新的包含全部Array索引的 Iterator对象,
  • values 有keys就有values,返回一个新的包含全部Array值的 Iterator对象,
  • every、some、includes 返回 布尔值,
  • filter,map 返回新数组,
  • reducer 有点神奇 返回累加值,
  • find、findIndex 找元素 一个返回第一个符合的元素本身,一个返回他的索引,
  • 最后还有个flat,展平了数组,
  • forEach 遍历数组, 这么一数起来,方法还真不少呢!

总结

想要记住所有的方法呢,不下点功夫是不行的,但是想要记住有副作用的,然后排除掉他们的话,还是容易的,最后做个表,方便直观的来看。

方法 作用 返回结果 有无副作用
push 数组尾部插入元素 改变了的原数组
pop 数组尾部删除元素 改变了的原数组
shift 数组头部插入元素 改变了的原数组
unshift 数组头部删除元素 改变了的原数组
splice 增删改数组 改变了的原数组
sort 数组排序 改变了的原数组
reverse 数组反序 改变了的原数组
fill 填充数组 改变了的原数组
concat 连结数组 合并的新数组
join 合并数组为字符串 字符串
indexOf 查索引 第一个索引
lastIndexOf 查索引 最后一个索引
slice 截取数组 截取的新数组
entries 迭代数组 迭代器对象
keys 迭代数组的key 全部的key
values 迭代数组的value 全部的value
every 每个都满足 布尔值
some 有一些满足 布尔值
includes 包含某元素 布尔值
filter 过滤数组 新数组
map 加工数组 新数组
reducer 迭代数组 累加值
find 查找元素 第一个元素或undifined
findIndex 查找元素 第一个元素的index
flat 展平数组 新数组
forEach 遍历数组 void

就到这里,怎么样,清楚了吧。

如果觉得不错请支持作者
------ 版权声明 ------

本文标题:数组方法哪些有副作用,一目了然!

文章作者:

发布时间:2022年03月11日 - 07:00

最后更新:2023年09月20日 - 10:25

原始链接:https://blog.lifesli.com/2022/03/11/%E6%95%B0%E7%BB%84%E6%96%B9%E6%B3%95%E4%B8%80%E7%9B%AE%E4%BA%86%E7%84%B6/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。