美文网首页程序员让前端飞
js 中数组的 空位 与 undefined

js 中数组的 空位 与 undefined

作者: jackPan | 来源:发表于2017-07-19 10:05 被阅读0次

之前一直对这个没什么概念,直到遇到一个诡异的 bug ,然后慢慢追究,最终发现了 js 数组中的空位undefined 的不同。

这道题是这样的,如何快速的生成一个长度为10,并且元素与索引一样的数组。

比如 [0, 1, 2, 3, 4, 5 ...]

下面是我的答案:

var arr = Array(10).fill(0).map((v, k) => k)

如果不加 fill 那一步操作就会得到一个空数组
当时感觉以为数组的 map 方法是因为数组元素是 undefined 才会被忽略的,看来我还是太天真。

image.png

然后我一脸懵逼, 紧接着到了下图:

image.png

我开始怀疑人生,这不都是 undefined 吗,只是写法不一样罢了。

然后分别在 safari, firefox 和 node 中试验了下:

safari:

safari

firefox:

firefox

node:

node

这下通过对比终于明朗了

Array(10) 产生的是 10 个数组空位,并不是 undefined, 是 chrome 浏览器误导了我们。

数组的 map filter forEach等方法只对空位忽略不会忽略undefined,所以
Array(10).fill(undefined).map((v,k) => k) 也会得到正确的结果。

还有个不错的方法是:
Array.from({length: 10}, (v, k) => k)

关于 Array.from 请参考文档Array.from

相关文章

  • js 中数组的 空位 与 undefined

    之前一直对这个没什么概念,直到遇到一个诡异的 bug ,然后慢慢追究,最终发现了 js 数组中的空位与undefi...

  • JS中的数组空位和undefined

    假设我们有下面代码 我们预期输出的是[4,4,4,4], 然而输出的是[undefined, undefined,...

  • 深入理解es6(附代码-中)

    深入理解es6 ES6 第五章:数组的空位 数组的空位,数组的某个索引位置没有任何值,undefined不是空位 ...

  • js笔记

    js数组 删除某个元素 js数组是否含有某个元素 判断value为undefined cookie操作

  • 前端小知识Day3

    1、如何区分数组和对象? 2、js中的undefined 和 ReferenceError: xxx is not...

  • JS杂记

    1、Undefined 与 Null 的区别 Undefined 与 null 的值相等,但类型不相等。在js中,...

  • js数组的方法

    一、JS中去除数组中的假值(0, 空,undefined, null, false) 1.Array.filter...

  • 1.判定数据类型

    js数据类型: 字符串 数字 布尔 数组 对象 null undefined 出现undefined的情况: 1....

  • #JS#null&undefined

    JS的数据类型 字符串、数字、布尔、数组、对象、null、undefined undefined这个值表示变量不含...

  • apply找出数组中最大的元素&空元素变为undefin

    找出数组中最大的元素 将数组中的空元素变为undefined 为什么要将数组中的空元素变为undefined呢?空...

网友评论

    本文标题:js 中数组的 空位 与 undefined

    本文链接:https://www.haomeiwen.com/subject/dgnkkxtx.html