js--数组的map()方法的使用
javaScript中Array.map()的用法
前言
作为一个刚刚踏入前端世界的小白,工作中看到身边同事大佬写的代码就像古诗一样简介整齐,而我的代码如同一堆散沙,看上去毫无段落感,而且简单的功能需要一大堆代码才能实现,不仅加大了自己的工作量,同时也给调试和维护增加了很大难度。这里拿我的代码和大佬的做一下对比
先上我的代码
CategoriesApi().then((res) => {
for (let i = 0; i < res.list.length; i++) {
let item={}
item.name=res.list[i].name
item.price=res.list[i].price
.........
this.DataList.push(item)
}
}
})
大佬们的代码
async getCategories(params) {
const { list = [] } = await Categories(params)
this.DataList = [
list.map((node) => {
return {
...node
}
})
]
}
所以这里需要说到今天的主角,数组的map用法,
语法及定义
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素
我的理解就是map首先会创建一个新的数组,其中新数组的每一个元素就是原数组中每一个元素经过咱们设置的给定函数变化后的结果。也就是说对原始数组中的每一项运行给定的函数,然后按原数组的顺序组装成新的数组,该方法也不会改变原始的数组,还产生一个新数组。
map()接收两个参数:
第一个参数必填,为一个函数,就是上面所说的给定的函数(每一项执行的函数,必写),这个给定的函数又有三个参数,第一个为当前元素的值(必写),第二个参数是当前值的下标索引,第三个为当前元素属于的数组对象(目前觉得没啥用)。
第二个参数非必填,thisValue,对象作为该执行回调时使用,传递给函数,用作 "this" 的值。如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。(目前还不会用)
简单的实例
//定义一个函数,使得传入的每一个值都加上2
function add2(x,y,z){
console.log(x+"=="+y+'=='+z);
return x + 2
}
//定义一个数组
var arr = [1,2,3,4,5,6]
var newArr = arr.map(add2)
console.log(newArr);
打印结果
1==0==1,2,3,4,5,6
2==1==1,2,3,4,5,6
3==2==1,2,3,4,5,6
4==3==1,2,3,4,5,6
5==4==1,2,3,4,5,6
6==5==1,2,3,4,5,6
(6) [3, 4, 5, 6, 7, 8]
进阶实例
let dataList = res.list.map(item => {
return {
name: item.name,
sex: item.sex ==1? '男':'女',
age: item.age
}
})
或者也可以把return省去
const dateList=res.list.map(item => ({
name:item.name,
age:item.age
})
);
别的高级的场景用法暂时还没有碰到,我会继续学习,逐步提高自己的代码质量,不再仅仅是用到for循环这么low的写法,还有forEach,for..in ,for...of,,,set,filter,every,find等等好多看起来高大上的方法,不光要学会,更重要是在代码中运用到,继续加油!明天又是充满希望的一天!!!!
js--数组的map()方法的使用的更多相关文章
- jQuery与JS中的map()方法使用
1.jquery中的map()方法 首先看一个简单的实例: $("p").append( $("input").map(function(){ return $ ...
- js实现的map方法
/** * * 描述:js实现的map方法 * @returns {Map} */ function Map(){ var struct = function(key, value) { this.k ...
- 【前端_js】javascript中数组的map()方法
数组的map()方法用于遍历数组,每遍历一个元素就调用回调方法一次,并将回调函数的返回结果作为新数组的元素,被遍历的数组不会被改变. 语法:let newAarray = arr.map(functi ...
- js中数组的map()方法
map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值 map()方法按照原是数组顺序以此处理元素 注意:map()不会对空数组进行检测 :不会改变原始的数组 实例: var nu ...
- JS模拟实现数组的map方法
昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下m ...
- 兼容低版本JS的Array.map方法
前几天去别的公司面试遇到个这样的问题,兼容IE7下的Array.map方法,一脸蒙蔽.后面回来查了下资料发现.Array.map方法是ECMA-262 标准中新添加的方法,在低版本的JS中是木有的. ...
- js数组高阶方法reduce经典用法代码分享
以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要 ...
- javascript中数组的map方法
map方法原型:array1.map(callbackfn[, thisArg]) 参数: array1,必选. 一个数组对象.该函数一般用于数组对象 callbackfn,必选. 最多可以接受三个参 ...
- 数组的map方法
map方法 不支持IE6.7 .8 array1.map(fn) array1.map(fn[,thisArg]) 注意: fn 必须是函数,如果不是函数则会报错 TypeError: undefi ...
- js数组去重的方法(转)
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
随机推荐
- 利用CSS3实现div页面淡入动画特效
利用CSS3实现页面淡入动画特效 摘要 利用CSS3动画属性"@keyframes "可实现一些动态特效,具体语法和参数可以网上自行学习.这篇文章主要是实践应用一下这个动画属性 ...
- SixLabors.ImageSharp 实践小结
前言 之前写过一篇 Linux/Docker 中使用 System.Drawing.Common 踩坑小计, 当时主要是有一块图像处理的需要从 .net framework 迁移到 .net core ...
- 想要看懂鸿蒙OS源码?朱老师带你从框架分析开始
HarmonyOS V2.0是面向轻量级设备的鸿蒙L0/L1级设备端操作系统,于2020.9开源至今已有2个多月,但是很多同学在学习鸿蒙源码时仍然感觉难以下手,找不到突破口. 2020.11.25(本 ...
- 从txt中提取子域名
import re DOMAIN =[] f = open('test.txt','r',encoding='UTF-8') w = open('domain.txt','w') for data i ...
- FL Studio通道预设之采样预览
FL Studio采样预览栏在采样设置窗口的最底端,它能很好地显示 出载入采样的波形也可以将波形显示改为频谱显示.它里面显示出的是经过预处理效果栏处理后的波形或频谱图.我们在波形显示器下面还可以看到波 ...
- 分享用MathType编辑字母与数学公式的技巧
利用几何画板在Word文档中画好几何图形后,接着需要编辑字母与数学公式,这时仅依靠Word自带的公式编辑器,会发现有很多公式不能编辑,所以应该采用专业的公式编辑器MathType,下面就一起来学习用M ...
- 思维导图软件MindManager新手入门教程
MindManager是一款创造.管理和交流思想的思维导图软件,其直观清晰的可视化界面和强大的功能可以快速捕捉.组织和共享思维.想法.资源和项目进程等等.MindManager新手入门教程专为新手用户 ...
- word边框+底纹
边框(段落和文字):先进行方框.阴影.三维等边框的选择,再进行样式.颜色.宽度设置,应用于:段落和文字:选项:距离正文上下左右距离. 页面边框(页.整篇文章等):先进行方框.阴影.三维等边框的选择,再 ...
- 聊聊 传统IO和网络IO
IO 模型 传统 IO读写 磁盘IO主要的延时是由(以15000rpm硬盘为例): 机械转动延时(机械磁盘的主要性能瓶颈,平均为2ms) + 寻址延时(2~3ms) + 块传输延时(一般 ...
- 2016湖南省赛 A 2016 题解(同余)
题目链接 题目大意 给出正整数 n 和 m,统计满足以下条件的正整数对 (a, b) 的数量: 1<=a<=n 1<=b<=m a*b%2016=0 题目思路 我本来以为是容斥 ...