位置: 编程技术 - 正文

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构造函数继承)

  • 待认证进项税额和待抵扣进项税额的区别
  • 建筑业的增值税税负
  • 企业税务包括哪些内容
  • 增值税交多少怎么查询
  • 个人社保信息变更
  • 金税盘服务费怎么抵扣税
  • 核定征收需要什么条件和手续
  • 期初试算平衡表不平衡怎么查
  • 年报过期了
  • 全年一次性奖金税率表
  • 小微企业城建税优惠政策2023
  • 个人到税务局开发票要带什么东西
  • 税控设备维护费会计分录
  • 每个月0申报,对企业有什么影响吗?
  • 外购商品用于营销活动
  • 保险公司返点啥意思
  • 租赁收入无发票怎么做账
  • 折让方式
  • 收到跨境分红的会计处理怎么做?
  • 员工考试报名费计入什么科目
  • 附注的主要作用
  • 公司买手机可以开票抵扣吗
  • 销售方未抄报税的专票购买方能抵扣吗?
  • 应交增值税减免税款账务处理
  • 质量扣款可以放到费用吗
  • 增值税怎么补提
  • 代扣职工社保
  • 以银行存款缴纳企业所得税所引起的变动为
  • 分公司注销分配表
  • 进口增值税计入关税完税价格吗
  • 高新创投企业所得税税率
  • 公账转公账没有发票
  • 印花税未交罚款会怎么样
  • 小宝宝耸肩膀缩脖子
  • 公司购消防器材会计分录
  • win11启动方式
  • 社保缴纳基数相差多少
  • 应付股利在资产负债表哪个科目
  • php实现和工作原理
  • 生产性生物资产折旧计入什么科目
  • 职工福利费用怎么入账
  • 公司企业名称变更,银行账号会变吗
  • 无限极分类mysql
  • phpsystem函数
  • thinkphp3.0
  • 实发工资总额怎么算
  • 公司对自己内部的要求
  • mysql好在哪里
  • 关于python序列类型
  • 2020织梦建站教程全集
  • 公账转钱出来要收手续费吗
  • 二手车经销管理办法
  • sql server 2008使用教程
  • sqlserver2008数据迁移
  • asp连接mysql数据库
  • mysql where join
  • 贷款调查的主要内容
  • 印花税缴纳时间点
  • 绿植租赁怎么开票
  • 劳务派遣的公司值得去吗
  • 税前利息为什么这么高
  • 收回已转销的应收账款而恢复的坏账准备
  • 现金日记账本月合计怎么划线
  • 开票软件信息备份怎么备份
  • 如何删除win10系统
  • win10如何利用镜像安装系统
  • 苹果电脑dock栏是什么意思
  • linux安装sz
  • win10系统预览版
  • linux命令文件移动并改名
  • linux常见shell命令
  • Win7摄像头驱动程序
  • minidump文件怎么打开
  • linux配置ssh服务器 用户名
  • Android Toast设置弹窗大小
  • JavaScript、jQuery与Ajax的关系
  • 货物劳务税包括哪些税
  • 房产营业税满2年怎么算
  • 企业筹建期间发生的费用应计入什么账户
  • 置换买新车划算吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设