V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
oliver34

js,新建数组问题

  •  
  •   oliver34 · Oct 15, 2016 · 3203 views
    This topic created in 3482 days ago, the information mentioned may be changed or developed.

    我们知道在 js 中可以通过 Array 构造函数创建一个数组 :

    var arr = new Array();
    

    当我们通过在构造函数传入一个整数,就会创建 length 为对应数值的数组:

    var arr = new Array(10);  // 创建一个长度为 10 的数组
    

    当我们传递的是其他类型的的参数,会创建包含那个值的只有一项的数组:

    var arr = new Array("10");  // 创建一个包含 1 项,即字符串"10"的数组
    

    好奇之下传入一个浮点小数:

    var arr = new Array(10.0);  
    console.log(arr);
    

    结果输出 [undefined × 10] ,这是为什么?数组里面的内容是什么意思?

    9 replies    2016-10-16 14:25:59 +08:00
    davedavehong
        1
    davedavehong  
       Oct 15, 2016
    10.0 会被转换成 10 ,实际效果和 new Array(10);效果一样
    xxxyyy
        2
    xxxyyy  
       Oct 15, 2016 via Android
    [undefined x 10] 应该是你在 chrome 的控制台看到的吧,如果在 Firefox 的 控制台可能直接显示 [undefined, undefined, ...] 等 10 个 undefined 。也就是说这里是 创建 10 个元素的数组的意思,这是由于在 js 中 10.0 跟 10 是一样的。
    lijsh
        3
    lijsh  
       Oct 15, 2016
    new Array(10) 返回的不也是[undefined × 10] 吗?

    这里面有个大坑,这样创建的数组(包括仅设置 length 的数组),直接用 forEach 方法是迭代不了的。只能用 for in 数组 length 的方法。
    oliver34
        4
    oliver34  
    OP
       Oct 15, 2016
    @lijsh 哦,原来是这个意思,明白了,看到 undefinedX10 一下子没明白是什么
    sherlocktheplant
        5
    sherlocktheplant  
       Oct 15, 2016
    @lijsh
    果然是这样 学到了

    测试了一下 map/reduce/forEach/every/some 都无法遍历到 undefined 的元素 但是 find 和 for(var i = 0; i < arr.length;i++)循环可以
    sherlocktheplant
        6
    sherlocktheplant  
       Oct 15, 2016
    @lijsh 试了一下 underscore 和 lodash 好像都可以正常遍历
    SuperMild
        8
    SuperMild  
       Oct 15, 2016
    对于 JS 来说,新建数组时指定数组长度貌似意义不大,多数情况下直接建个空数组就可以了。
    mingyun
        9
    mingyun  
       Oct 16, 2016
    @L3au 学习了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5623 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 108ms · UTC 07:58 · PVG 15:58 · LAX 00:58 · JFK 03:58
    ♥ Do have faith in what you're doing.