JS的map()方法会改变原始数组吗?
map()为操作数组的一种方法,官方文档显示:
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
但是我在实践中却发现事实并非如此。
当数组为基础类型时原数组不变:
let array=[1,2,3,4,5]let newArray=array.map((item) => item*2)console.log(array); // [1,2,3,4,5]console.log(newArray);//[2, 4, 6, 8, 10]
当数组为引用类型时原数组发生改变:
let array = [{ name: 'Anna', age: 16 }, { name: 'James', age: 18 }]let newArray=array.map((item) => {item.like='eat';return item;})console.log(array); // [{ name: 'Anna', age: 16,like: "eat"},{ name: 'James', age: 18,like: "eat"}]console.log(newArray);//[{ name: 'Anna', age: 16,like: "eat"},{ name: 'James', age: 18,like: "eat"}]
避免原数组发生改变:
let array = [{ name: 'Anna', age: 16 }, { name: 'James', age: 18 }]let newArray=array.map((item) => {const obj = { ...item, like:'eat'};return obj;})console.log(array); // [{ name: 'Anna', age: 16},{ name: 'James', age: 18}]console.log(newArray);//[{ name: 'Anna', age: 16,like: "eat"},{ name: 'James', age: 18,like: "eat"}]
JS的map()方法会改变原始数组吗?相关推荐
- JS Array.map方法内异步方法无法同步执行
问题: JS Array.map方法内异步方法无法同步执行 场景: 我们在使用map来设置每一项值的时候,涉及到异步操作,就会出现问题. 按照常规,重现出一种情形. 假设我要使用map对每一项值进行操 ...
- 数组中map遍历会改变原数组吗?
提到map用法,很多人想到forEach,那么这两种方法的区别是什么?会有人说,forEach会改变原数组:map不会改变原数组,返回一个新数组.事实是这样的吗?答案不是,这种说法不准确,是有条件的. ...
- 重写数组的方法(改变原数组)
下图是我自我学习模拟数组时总结的一些重新数组的方法: 本文我们暂不讨论不改变原数组的方法,只谈改变原数组用到的 6 种方法. 改变原数组的方法 push() 按参数顺序向数组尾部添加元素,返回新数组的 ...
- map遍历是否改变原数组
遇到问题:将后端返回的数字(数字代表不同含义),展示在前端页面,用map的方法遍历将item值重新赋值,只展示的话是没有任何问题的:然后又需要将这个值以数字的形式返回给后端,这个时候就导致值已经变成了 ...
- 用原生js实现map方法
我们平时用的是已经封装好的map方法,如果让我们自己封装一个map,应该如何实现. 万变不离其宗,其实遍历数组的核心还是for循环.因此下面封装一个map方法. 思路: 1.在原型上添加一个方法 2. ...
- js操作改变原数组的解决方法
最近在开发的时候发现js中的循环操作会改变原数组,var一个变量承接也不行 甚至连map方法都会改变原数组,下面是解决方法 let a = ['a','b','c'] let b = [[2, 0, ...
- js改变原数组的方法和不改变原数组
一.改变原始数组的方法: 1.pop() pop() 方法移除数组的最后一个元素,并返回该元素. 注意:pop() 方法会改变数组的长度. pop() 返回它删除的元素: let teams = [& ...
- JS中find(), findIndex(), filter(), forEach(), some(), every(), map()方法
1. find()与findIndex() find()方法,用于找出第一个符合条件的数组成员.它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该 ...
- Vue.js中splice()方法实现对数组进行删除的操作
语法结构:splice(index,len,[item]) 1.可以用来添加/删除/替换数组内某一个或者几个值 2.该方法会改变原始数组 index:数组开始下标 len: 替换/删除的长度 item ...
最新文章
- vue2.0实现底部导航切换效果
- OpenGL学习笔记以及其它学习思考
- 区块链学堂(1):区块链引子
- 网页设计/移动开发学习资源推荐
- curl上传文件linux,在Linux中如何使用curl从一个服务器流式传输文件到另一个服务器(有限的服务器资源)...
- Linux基础-目录与路径
- 3分钟搞懂前后端开发的区别
- java引用 弱引用_了解Java弱引用
- 如何使用Spring优雅地处理REST异常
- Kotlin学习笔记18 反射Part2
- (30)Verilog HDL系统函数:$stop
- ios沙盒查找图片展示
- PHP毕业设计——许愿墙(有源码)
- 过滤器和拦截器的区别
- CruiseControl入门简介
- java中如何获取一个字符串的长度呢?
- mingw不能安装_C语言/C++初学——Visual Studio环境的安装配置与使用
- 202101汇率换算
- 你好Haskell (1) 环境搭建和简单玩玩
- 容器 I/O 性能诊断:到底哪个应用是带宽杀手?