es6 数组的空位

es6 数组的空位数组的空位指,数组的某一个位置没有任何值。比如,Array构造函数返回的数组都是空位。Array(3)//[,,,]上面代码中,Array(3)返回一个具有3个空位的数组。注意,空位不是undefined,一个位置的值等于undefined,依然是有值的。空位是没有任何值,in运算符可以说明这一点。0in[undefined,undefined,undefined]//tr…

大家好,又见面了,我是你们的朋友全栈君。数组的空位指,数组的某一个位置没有任何值。比如,Array构造函数返回的数组都是空位。

Array(3) // [, , ,]

上面代码中,Array(3)返回一个具有 3 个空位的数组。

注意,空位不是undefined,一个位置的值等于undefined,依然是有值的。空位是没有任何值,in运算符可以说明这一点。

0 in [undefined, undefined, undefined] // true 0 in [, , ,] // false

上面代码说明,第一个数组的 0 号位置是有值的,第二个数组的 0 号位置没有值。
ES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位。
forEach() ,  filter() ,  every() 和some()都会跳过空位。
map()会跳过空位,但会保留这个值
join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。

// forEach 方法 [,'a'].forEach((x,i) => console.log(i)); // 1 // filter 方法 ['a',,'b'].filter(x => true) // ['a','b'] // every 方法 [,'a'].every(x => x==='a') // true // some 方法 [,'a'].some(x => x !== 'a') // false // map 方法 [,'a'].map(x => 1) // [,1] // join 方法 [,'a',undefined,null].join('#') // "#a##" // toString 方法 [,'a',undefined,null].toString() // ",a,,"

ES6 则是明确将空位转为undefined。

Array.from方法会将数组的空位,转为undefined,也就是说,这个方法不会忽略空位。 Array.from(['a',,'b']) // [ "a", undefined, "b" ] 扩展运算符(...)也会将空位转为undefined。 [...['a',,'b']] // [ "a", undefined, "b" ] copyWithin()会连空位一起拷贝。 [,'a','b',,].copyWithin(2,0) // [,"a",,"a"] fill()会将空位视为正常的数组位置。 new Array(3).fill('a') // ["a","a","a"] for...of循环也会遍历空位。 let arr = [, ,]; for (let i of arr) { console.log(1); } // 1 // 1 上面代码中,数组arr有两个空位,for...of并没有忽略它们。如果改成map方法遍历,空位是会跳过的。 entries()、keys()、values()、find()和findIndex()会将空位处理成undefined。 // entries() [...[,'a'].entries()] // [[0,undefined], [1,"a"]] // keys() [...[,'a'].keys()] // [0,1] // values() [...[,'a'].values()] // [undefined,"a"] // find() [,'a'].find(x => true) // undefined // findIndex() [,'a'].findIndex(x => true) // 0 由于空位的处理规则非常不统一,所以建议避免出现空位。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135247.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 单片机uart串口通信_uart接口图片

    单片机uart串口通信_uart接口图片RS-232-C标准采用负逻辑方式,标准逻辑“1”对应-5v~-15v,标准逻辑“0”对应+5V~+15v。如果需要和单片机系统的CMOS/TTL电平进行连接,则需要进行电平转换,一般采用MAX232进行电平转换。 1  UART接口简述 UART即通用异步收发器,可设置成全双工异步通讯方式,与PC等通讯;或设置成半双工同步模式与其他周边外设通信,如A/D或D/A。

  • 为什么要使用Iocomp控件?

    为什么要使用Iocomp控件?为什么要使用Iocomp控件?作为一个程序员,编写软件的过程中,我们常常需要用一些工控图表和工控仪表,想要自己制作出漂亮极品的控件的非常费时费力的,这时候使用专业的第三方控件就是非常不错的选择。一来节约了开发时间,降低了开发难度;二来第三方控件更加专业更精细;三来降低项目风险。Iocomp控件包括多种用来创建专业的仪表和测量、工业控制、工业监控等相关的应用程序的控件包,如仪表盘控件、开

  • 极域电子书包全新windows-android功能介绍[通俗易懂]

    极域电子书包全新windows-android功能介绍[通俗易懂]极域电子书包全新windows-android功能介绍

    2022年10月20日
  • ROC曲线的概念和意义[通俗易懂]

    ROC曲线的概念和意义[通俗易懂]ROC曲线受试者工作特征曲线(receiveroperatingcharacteristiccurve,简称ROC曲线),又称为感受性曲线(sensitivitycurve)。得此名的原因在于曲线上各点反映着相同的感受性,它们都是对同一信号刺激的反应,只不过是在几种不同的判定标准下所得的结果而已。接受者操作特性曲线就是以假阳性概率(Falsepositiverate)为…

  • Nginx实战之反向代理WebSocket的配置实例

    Nginx实战之反向代理WebSocket的配置实例

    2021年10月14日
  • Jquery基础学习笔记(1)

    Jquery基础学习笔记(1)

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号