<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg>
讯享网
:创建一个新数组,这个新数组由原数组中的每个元素都调用一次提供的函数后的返回值组成。
语法
- :生成新数组元素的函数,该函数接收一至三个参数:
- :数组中正在处理的当前元素。
- : 可选,数组中正在处理的当前元素的索引。
- : 可选, 方法正在操作的数组。
: 可选,执行 函数时值被用作
返回值:一个由原数组每个元素执行回调函数的结果组成的新数组。
- 方法会给原数组中的每个元素都按顺序调用一次 函数。
- 每次执行后的返回值(包括 )组合起来形成一个新数组。
- 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 删除的索引则不会被调用。
- 不修改调用它的原数组本身(当然可以在 执行时改变原数组)
因为 生成一个新数组,当你不打算使用返回的新数组却使用请用 或者 替代。
求数组中每个元素的平方根
讯享网
讯享网
返回的数组元素中存在

讯享网
在 map 中改变了原数组
对象数组,如代码与结果所示,对象数组在修改 时会改变原数组
讯享网
使用过程中直接改变原数组
- 方法处理数组元素的范围是在 方法第一次调用之前就已经确定了。
- 调用 方法之后 追加 的数组元素不会被 访问。
- 如果存在的数组元素改变了,那么传给 的值是 访问该元素时的值。在 函数调用后但在访问该元素前,该元素被删除的话,则无法被访问到。
如结果所示,会发现 输出的是 ,为什么会造成这种现象,
我们在示例代码中每一次 的执行,都会将原数组的 对象的 项 ,同时我们每一次执行 都会在给原数组 一个元素以及 的一个元素
当然由于 是在尾部添加,它不会被 所访问,但是 是在头部添加,会导致原数组之前的元素每执行一次 都会向后移一项
由于 的 ,每次都是访问当前项的元素,而恰好 这个元素每次都是 然后向后移一项,
所以得出结果
所以上述的代码示例如果没有添加 unshift 去改变原数组的话,输出的结果就是
+ 问题
讯享网
正确的处理方法应该如下
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/177722.html