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 由于空位的处理规则非常不统一,所以建议避免出现空位。

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

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL常见约束条件「建议收藏」

    MySQL常见约束条件「建议收藏」约束条件:限制表中的数据,保证添加到数据表中的数据准确和可靠性!凡是不符合约束的数据,插入时就会失败!约束条件在创建表时可以使用,也可以修改表的时候添加约束条件1、约束条件分类:1)notnull:非空约束,保证字段的值不能为空s_nameVARCHAR(10)NOTNULL,#非空2)default:默认约束,保证字段总会有值,即使没有插入值,都会有默认值!…

    2022年10月13日
  • 详解Anaconda + 如何在Anaconda上更换python版本「建议收藏」

    详解Anaconda + 如何在Anaconda上更换python版本「建议收藏」本文旨在详细介绍Anaconda以及如何在Anaconda上更换python版本。

    2022年5月8日
  • matlab中的振铃现象是啥,振铃现象产生的原因

    matlab中的振铃现象是啥,振铃现象产生的原因振铃现象是怎么回事?是什么?如何减小和抑制上冲及振铃?下面就由小编告诉大家和抑制方法吧!由于任何传输线都不可避免地存在着引线电阻、引线电感和杂散电容,因此,一个标准的脉冲信号在经过较长的传输线后,极易产生上冲和振铃现象。大量的实验表明,阴线电阻可使脉冲的平均振幅减小;而杂散电容和引线电感的存在,则是产生上冲和振铃的根本原因。在脉冲前沿上升时间相同的条件下,阴线电感越大,上冲及振铃现象就越严重;杂散…

    2022年11月3日
  • 西门子PLC s7-1200学习之路「建议收藏」

    西门子PLC s7-1200学习之路「建议收藏」1Introduction最近因为一个项目需要使用西门子PLC,买了一个入门级的PLCs7-1200,并完成了一个PLC和PC通过TCP进行通信的小程序,为了防止活干完了,内容就全忘了,所以用一个笔记进行梳理和总结。入门一种语言,需要回答新手的几个问题,这个笔记按照回答的方式梳理。2问题2.1PLC是什么,什么时候用,要怎么选?根据[1],PLC可以替代继电器功能并完成复杂的控制功能。个人感觉功能上来看,PLC、DSP、单片机和FPGA之间的界限越来越小,只是各有侧重。PLC因为基于梯形图

    2022年10月18日
  • linux下查看memcache是否正常

    linux下查看memcache是否正常

    2022年2月8日
  • origin画直线有锯齿_ps怎么让圆边缘没有锯齿

    origin画直线有锯齿_ps怎么让圆边缘没有锯齿使用环境(蓝色粗体字为特别注意内容)1、软件环境:Win732bit,OriginPro2018C.在使用Origin或者OriginPro画图的时候可能会遇到两个细节问题,1)曲线有锯齿,2)点与点之间的连线很尖锐,平滑。网上很多资料都提到Origin曲线平滑的问题,经笔者考究,所述的并不是本文中所指的点与点之间平滑的问题。废话少说,下面来看看原始数据:0.750.950….

    2022年9月21日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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