JavaScript数组中的省略索引

JavaScript数组中的省略索引,javascript,arrays,elision,Javascript,Arrays,Elision,JavaScript数组中未定义的元素之间有什么区别: 直接创建 用省略来创造 案例1的要素。二,。两者都有未定义的类型和值,但在elision中生成的类型和值没有索引(或任何可枚举属性,它们的数组有一个正确的数组。很明显,长度)。你能介绍一下这方面的背景吗 示例: Array [0, 1, 2] 3 "undefineds" Array [undefined, undefined, undefined] 3 "empties" //案例1。 常量und

JavaScript数组中未定义的
元素之间有什么区别:

  • 直接创建
  • 用省略来创造
  • 案例1的要素。二,。两者都有
    未定义的
    类型和值,但在elision中生成的类型和值没有索引(或任何可枚举属性,它们的数组有一个正确的
    数组。很明显,长度
    )。你能介绍一下这方面的背景吗

    示例:

    Array [0, 1, 2] 3 "undefineds"
    Array [undefined, undefined, undefined] 3 "empties"
    
    //案例1。
    常量undefineds=[undefined,undefined,undefined].map((el,i)=>i)
    console.log(unfineds,unfineds.length,'unfineds')
    //案例2。
    常量清空=[,,].map((el,i)=>i)
    console.log(清空,清空.length,“清空”)
    
    输出:

    Array [0, 1, 2] 3 "undefineds"
    Array [undefined, undefined, undefined] 3 "empties"
    

    注:在案例2中。我知道不仅索引
    I
    是未定义的,而且迭代返回的任何内容都是未定义的,例如:
    [,,,].map((el,I)=>'puppies')
    =>
    [undefined,undefined,undefined]

    看起来您已经知道其中的区别了。你到底想要什么“背景”?请注意,当你
    映射到一个带有省略的数组上时,关键是回调根本不会在不存在的元素上被调用。它不像是用
    undefined
    调用值,用
    undefined
    调用索引。此外,它不会返回
    未定义的
    s数组,而是返回另一个稀疏数组-您的
    控制台.log
    实现似乎对此感到困惑。它应该记录
    [,,,]
    [空,空,空]
    或。@Bergi谢谢你,你的评论和链接的三个副本正是我需要的,作为这种现象的背景。@epascarello谢谢,非常相关!我应该从
    Array.map
    的文档开始。