位置: 编程技术 - 正文

Javascript中Array.prototype.map()详解

编辑:rootadmin

推荐整理分享Javascript中Array.prototype.map()详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

在我们日常开发中,操作和转换数组是一件很常见的操作,下面我们来看一个实例:

从上例可以看出,所有的操作重复率都比较高,如何来优化呢,幸运的是Ecmascript 5给我们提供了一个map方法,我们可以利用它来优化上例:

从上例看以看出,我们使用map替换掉了for循环部分,从而只需要关心每个元素自身的实现逻辑。关于map方法详情请戳这里。

1.map基本定义:array.map(callback[, thisArg]);

map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值组合起来形成一个新数组。 callback 函数只会在有值的索引上被调用;那些从来没被赋过值或者使用 delete 删除的索引则不会被调用。

callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。

如果 thisArg 参数有值,则每次 callback 函数被调用的时候,this 都会指向 thisArg 参数上的这个对象。如果省略了 thisArg 参数,或者赋值为 null 或 undefined,则 this 指向全局对象 。

Javascript中Array.prototype.map()详解

map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。

当一个数组运行 map 方法时,数组的长度在调用第一次 callback 方法之前就已经确定。在 map 方法整个运行过程中,不管 callback 函数中的操作给原数组是添加还是删除了元素。map 方法都不会知道,如果数组元素增加,则新增加的元素不会被 map 遍历到,如果数组元素减少,则 map 方法还会认为原数组的长度没变,从而导致数组访问越界。如果数组中的元素被改变或删除,则他们被传入 callback 的值是 map 方法遍历到他们那一刻时的值。

2.map实例:

上例演示了在一个String上使用map方法获取字符串中每个字符所对应的 ASCII 码组成的数组。请注意看打印的console.log(arr)打印的结果。

也许你会有疑问,为什么不是[1,2,3]呢?我们知道parseInt方法可接收两个参数,第一个参数为需要转换的值,第二个参数为进制数,不了解的可以戳这里。当我们使用map方法的时候,callback函数接收三个参数,而parseInt最多只能接收两个参数,以至于第三个参数被直接舍弃,与此同时,parseInt把传过来的索引值当成进制数来使用.从而返回了NaN。看下面的输出结果:

后面两个很容易理解,但是前两个为什么返回1呢?为了解释这个问题,我们看看官方的描述:If radix is undefined or 0 (or absent), JavaScript assumes the following:a) If the input string begins with “0x” or “0X”, radix is (hexadecimal) and the remainder of the string is parsed.b) If the input string begins with “0″, radix is eight (octal) or (decimal). Exactly which radix is chosen is implementation-dependent. ECMAScript 5 specifies that (decimal) is used, but not all browsers support this yet. For this reason always specify a radix when using parseInt.c) If the input string begins with any other value, the radix is (decimal).在第三点中当string为其他值时,进制默认为。

那么我们如何修改才能使上例正常输出呢?看下例:

3.map方法的兼容性:map方法在IE8及以下浏览器不支持,要想兼容老版本的浏览器,可以:

a) Don't use map.b) Use something like es5-shim to make older IE's support map.c) Use the _.map method in Underscore or Lodash for an equivalent utility function.

标签: Javascript中Array.prototype.map()详解

本文链接地址:https://www.jiuchutong.com/biancheng/385645.html 转载请保留说明!

上一篇:javascript数组详解(javascript数组操作方法)

下一篇:Javascript 构造函数详解(javascript构造函数继承)

  • 增值税税率改变后原项目的新增单价按哪个税率
  • 车船税征收标准表
  • 会计所得税分录?
  • 简易计税方法的销售额不包括其应纳税额
  • 利润10万企业所得税多少
  • 企业所得税季度预缴纳税申报表
  • 公司名称变更在哪个网站
  • 其他应付款在借方资产负债表怎么填
  • 政府返还的增值税怎么算
  • 贴现率和折现率相等吗
  • 职工教育经费8%怎么算
  • 公允价值变动损益属于当期损益吗
  • 企业所得税汇算清缴退税分录
  • 企业缴纳增值税会计目录
  • 公交车收购
  • 财务费用汇兑损益是什么意思
  • 奖金属于应付职工薪酬
  • 材料折扣率
  • 合同没签定金可以退的吗
  • 银行的期初数据怎么进行账务处理?
  • 消费税增值税如何调整?
  • 收以前年度租金
  • 小规模纳税人季度多少免税
  • 资产损益表怎么看
  • 重置申报清册是什么意思
  • 上年度所得税费用又退回来了,如何做账
  • 多计提的费用怎么调整
  • 存货跌价准备怎么计提
  • 未分配利润是什么类科目
  • 普通发票也属于增值税发票吗
  • 财务报表申报错了怎么撤销
  • 工会经费怎么申报,多久报一次
  • 支付代账公司费用 怎么写凭证
  • windows11搜索
  • msstat.exe - msstat是什么进程 有什么用
  • 销售成本属于成本吗
  • Symfony学习十分钟入门经典教程
  • php简单文件管理
  • yolov5最新版
  • 待抵扣进项税额什么意思
  • 一般纳税人商业税负多少
  • 增值税申报主表在哪里查询
  • 公司组织员工旅游费可以在税前扣除吗
  • 小规模季报成功后怎么缴费
  • 建筑企业增值税收入确认时间
  • python requests检测响应状态码
  • 织梦痣铃表情太到位
  • mysql需要转义的特殊字符
  • windows11/windows10专业清理的系统工具Duplicate Cleaner5.0.13中文破解免费下载
  • 哪些是生产企业
  • 生产辅料怎么分类
  • 兼职人员的差旅费
  • 小规模纳税人企业所得税优惠政策最新2023
  • 简易征收的纳税标准
  • 残保金计算公式及例题
  • 外币汇率分录
  • 自己开发自己施工
  • 管理费用包括哪些
  • 新会计准则关于贷款损失准备
  • 填制会计凭证要求的是
  • mysql数据库遇到的故障及分析
  • win10系统预览版
  • snmptrap.exe - snmptrap是什么进程 有什么作用
  • win8应用程序没有响应
  • win7运行老游戏方法
  • 铁嘴啥意思
  • JavaScript实现Base64编码转换
  • AddForceAtPosition方法:增加刚体点作用力
  • unity游戏项目开发教程
  • unity 接入sdk
  • unityhub安装unity出错
  • js时间范围
  • javascript的主要功能
  • 怎么查看keytab文件
  • javascript巧用eval函数组装表单输入项为json对象的方法
  • 新疆税务局电子
  • 国家税务网上办税
  • 国税局事业编制和公务员哪个比较好
  • 北京国税发票查询真伪查询
  • 新疆都有哪些地貌
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设