2024年前端最新js数组高阶函数——map()方法_js map方法,大厂面试必备技能 ...

打印 上一主题 下一主题

主题 867|帖子 867|积分 2601

最后

文章到这里就竣事了,如果以为对你有帮助可以点个赞哦
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新解说视频】



  • array:可选参数,表示正在处置处罚的当前数组。
thisArg:可选参数,表示实行 callback 函数时的 this 值。

map()的基本使用

⭐使用 map() 方法将数组中的数字乘以 2 并返回新的数组:
  1. let numbers = [1, 2, 3, 4];
  2. let doubled = numbers.map(function(num) {
  3.     return num \* 2;
  4. });
  5. console.log(doubled); // 输出 [2, 4, 6, 8]
复制代码
首先我们界说了一个名为 numbers 的数组,其中包含四个数字。我们使用 map() 方法对该数组中的每个元素实行了一次函数,该函数将每个数字乘以 2 并返回新的数组 doubled

⭐将字符串数组转换为数字数组:
  1. let strings = ['1', '2', '3'];
  2. let numbers = strings.map(function(str) {
  3.     return parseInt(str, 10);
  4. });
  5. console.log(numbers); // 输出 [1, 2, 3]
复制代码
我们声明了一个名为 strings 的数组。我们使用 map() 方法对该数组中的每个元素使用了一次函数,该函数将每个字符串转换为数字并返回新的数组 numbers。

⭐将对象数组转换为属性值数组:
  1. let objects = [{ name: 'apple', color: 'red' }, { name: 'banana', color: 'yellow' }, { name: 'orange', color: 'orange' }];
  2. let colors = objects.map(function(obj) {
  3.     return obj.color;
  4. });
  5. console.log(colors); // 输出 ["red", "yellow", "orange"]
复制代码
⭐将一个数组中的对象转换为另一个数组,只保留对象中的某些属性:
  1. const users = [
  2.   {name: 'Alice', age: 25},
  3.   {name: 'Bob', age: 30},
  4.   {name: 'Charlie', age: 35},
  5. ];
  6. const names = users.map(function(user) {
  7.   return user.name;
  8. });
  9. console.log(names); // ['Alice', 'Bob', 'Charlie']
复制代码

⭐将一个数组中的字符串转换为另一个数组,只保留长度大于等于5的字符串:
  1. const words = ['apple', 'banana', 'cherry', 'date', 'elderberry'];
  2. const longWords = words.map(function(word) {
  3.   if (word.length >= 5) {
  4.     return word;
  5.   }
  6. });
  7. console.log(longWords); // ['apple', 'banana', 'cherry', undefined, 'elderberry']
复制代码

⭐⭐⭐需要注意的是,在使用 map() 方法时,我们可以选择传递可选参数 thisArg 来设置回调函数的 this 值。如果不传递 thisArg 参数,则默认情况下,回调函数的 this 值为undefined。
举个例子:
  1. let numbers = [1, 2, 3];
  2. let obj = { multiplier: 2 };
  3. let doubled = numbers.map(function(num) {
  4.     return num \* this.multiplier;
  5. }, obj);
  6. console.log(doubled); // 输出 [2, 4, 6]
复制代码
上面的例子中,我们界说了一个名为 numbers 的数组,其中包含三个数字。我们还界说了一个名为 obj 的对象,其中包含一个名为 multiplier 的属性,该属性的值为 2。我们在回调函数中使用 this.multiplier,其中 this 值为 obj,来将数组中的每个元素乘以 2。

map()的优缺点

优点:


  • map()默认会有返回值,一样平常返回一个数组。这里要强调一下,函数默认没有返回值。如果函数内部没有明白使用return语句返回一个值,那么该函数实行完毕后会主动返回undefined。以是这个也是map()的一个特色
  • 可以方便地对数组中的每个元素举行操纵,并生成一个新的数组;
  • 不会改变原始数组。
缺点:


  • 无法使用break,continue,return等关键字控制循环,必须全部遍历完毕才能停止;
  • 对于大型数据聚集而言,可能会导致性能题目。
数据小的时间,用map()循环非常的爽,不是很消耗性能。但数据大的情况下,用map()会很耗性能,因为map()会对数组中的每个元素实行一次callback方法。发起数据大的时间,用for循环。虽然多次for循环嵌套看着恶心,但是性能好,是底层的东西。而所谓的map(),set(),for in,for of 都是在for循环的基础上再封装。单从性能角度考虑,远不如for循环优秀。
map()的使用场景



  • 将一组数据转换为另一种形式或格式;
  • 对一组数据举行过滤、去重等操纵;
  • 对一组DOM元素举行修改等操纵;

去重

一样平常情况下,去重一个数组,有这么几种方法。
双重for循环配合splie去重

  1. //先定义一个数组
  2. var arr=[1,2,2,3,4,4,5]
  3. //双重for循环
  4. for(i = 0;i < arr.length; i++){
  5.   for(j = i+1;j < arr.length; j++){
  6. //如果数组中有两个数相等,这里用三位运算符
  7.     if(arr[i] === arr[j]){
  8. //在第j个元素开始删除,删除1个元素。splice方法,还可以对多个对象中的某个或某几个对象删除
  9.       arr.splice(j,1);
  10.       j--;
  11.     }
  12. ### 文末
  13. 逆水行舟不进则退,所以大家要有危机意识。
  14. 同样是干到35岁,普通人写业务代码划水,榜样们深度学习拓宽视野晋升管理。
  15. 这也是为什么大家都说35岁是程序员的门槛,很多人迈不过去,其实各行各业都是这样都会有个坎,公司永远都缺的高级人才,只用这样才能在大风大浪过后,依然闪耀不被公司淘汰不被社会淘汰。
  16. 为了帮助大家更好温习重点知识、更高效的准备面试,特别整理了《前端工程师核心知识笔记》电子稿文件。
  17. 内容包括html,css,JavaScript,ES6,计算机网络,浏览器,工程化,模块化,Node.js,框架,数据结构,性能优化,项目等等。
  18. **269页《前端大厂面试宝典》**
  19. 包含了腾讯、字节跳动、小米、阿里、滴滴、美团、58、拼多多、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了初中级前端技术点。
  20. **[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
  21. ![](https://img-blog.csdnimg.cn/img_convert/b98713ee557d94286de8afe404cb51d1.png)
  22. **前端面试题汇总**
  23. ![](https://img-blog.csdnimg.cn/img_convert/1d691ca297c9016828aff783a701e065.png)
  24. net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
  25. ![](https://img-blog.csdnimg.cn/img_convert/b98713ee557d94286de8afe404cb51d1.png)
  26. **前端面试题汇总**
  27. ![](https://img-blog.csdnimg.cn/img_convert/1d691ca297c9016828aff783a701e065.png)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户国营

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表