JavaScript数组中的省略索引
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
元素之间有什么区别:
直接创建
用省略来创造
案例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
的文档开始。