福州门户网站建设,有企业邮箱案例的网站,蒙阴网站优化,医院ppt模板免费下载 素材开发人员每天都会处理数组。作为集合#xff0c;要查询的重要属性是项目数#xff1a;Array.prototype.length。在JavaScript中#xff0c;length它并不总是指示现有元素的数量#xff08;对于稀疏数组#xff09;#xff0c;并且修改此属性可能会删除元素。让我们揭开这…开发人员每天都会处理数组。作为集合要查询的重要属性是项目数Array.prototype.length。在JavaScript中length它并不总是指示现有元素的数量对于稀疏数组并且修改此属性可能会删除元素。让我们揭开这个属性背后的神秘面纱。length 数组的值是一个无符号的32位整数在数值上大于数组中的最高索引。对于特定的数组类型此属性的行为有所不同。让我们枚举它们当数组的元素具有以开头的连续索引时数组是密集的0。例如[1, 3, 4]是致密的因为索引是连续的01和2。当数组的元素没有以开头的连续索引时它是稀疏的0。例如[1, , 4, 6]是稀疏的因为元件的索引是不连续的02和3。长度作为数组中元素的数量的常见用法length是确定元素的数量。这对于密集集合类型是正确的参见JS Bin中的示例密集数组没有空并且项目数对应于highestIndex 1。在[3, 5, 7, 8]最高的索引是3元素的8因此该数组的大小3 1 4。长度大于最大索引的数字在稀疏数组中该length值大于最高索引但是它并不表示元素的实际数量。查询时length它大于元素数。由于阵列中的间隙而发生。添加或删除元素时length仅基于最高索引进行突变。任何不影响最高索引的数组修改都不会修改length例如使用时delete。参见JS Bin中的示例长度修改在前面的说明中length只读。但是JavaScript也允许修改此属性。长度修改会影响数组具体取决于新值和现有的最高索引。它可以删除元素或使数组稀疏。当新length数字小于或等于最高索引时将删除索引大于或等于新大小的所有元素。从数组末尾删除元素的有用方案。如果使用大于最高索引的数字或使用大于current的数字length则数组将变得稀疏。它很少有用。请参阅JS Bin中的示例可以为分配一个不同于数字的类型length。JavaScript会将原语转换为数字。如果转换结果NaN小于或小于0则引发错误Uncaught RangeError: Invalid array length。安全编码通过创建稀疏数组来修改数组length使用删除元素delete使用添加元素[newIndex]是潜在问题的根源。结果是不一致的length值。JavaScript提供了更安全的选择。要将元素添加到数组的末尾请使用Array.prototype.push并删除最新的pop。要将元素插入开头请使用unshift并删除第一个shift。对于更复杂的插入删除或替换splice也足够强大。请参阅JS Bin中的示例在极少数情况下数组可以是稀疏的。依靠length确定元素的数量是不安全的。只需使用一个辅助函数来处理缺少的元素in运算符确定对象是否具有属性。它可以完美地检查元素是否存在于特定索引处。结论如本文所见length是具有复杂行为的属性。通常它的工作不会令人惊讶但是在处理稀疏数组和修改时最好采取预防措施length。另一种选择是完全避免修改此属性并使用该splice()方法。另请参见Array.prototype.length稀疏数组与密集数组原著作者德米特里·帕夫鲁汀文章来源国外文章链接Dmitri Pavlutin Blogdmitripavlutin.comPS原著文章内容为英文版本建议使用360极速浏览器进行翻译阅读。