-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
重学js-数组 #27
Comments
创建数组两种创建数组的方法: 数组直接量:
数组直接量的值不一定要是常量,也可以是任意的表达式:
如果省略数组直接量中的某个值,省略的元素将被赋予undefined值:
数组直接量的语法允许可选的逗号结尾,故[,,]只有两个元素而非三个。 调用构造函数Array()有三种方式调用构造函数
|
数组元素的读和写使用[ ]操作符来访问和谐数组的一个元素。请记住,数组是对象的特殊形式,使用方括号访问数组元素就像使用方括号访问对象的属性一样。
清晰的区分数组的索引和对象的属性名是非常重要的。所有的索引都是属性名,但只有0 ~ 2^23 - 2之间的整数属性名才是索引。所有的数组都是对象,可以为其创建任意名字的属性。 注意,可以使用负数和非整数来索引数组,这种情况下,数值转换为字符串,字符串作为属性名来用。
事实上数组索引仅仅是对象属性名的一种特殊类型,这意味着 |
稀疏数组稀疏数组就是包含从0开始的不连续索引的数组,
delete操作符也可以产生稀疏数组。 足够稀疏的数组通常实现上比稠密的数组更慢、内存利用率更高,在这样的数组中查找元素的时间与常规对象属性的查找时间一样长。 注意,在数组直接量中省略值时不会创建稀疏数组。省略的元素在数组中是存在的,其值是
|
使用delete操作符删除数组元素可以像删除对象属性一样使用
|
数组遍历使用for循环遍历数组元素是最常见的方法:
在嵌套循环或者其他性能非常重要的上下文中,可以看到这种基本的数组遍历需要优化,数组的长度都应该只查询一次,而非每次循环都要查询
如果处理的数组是稀疏的,想要排除不存在的元素:
还可以通过
注意,
定义在数组上的属性也会被遍历出来:
ECMAScript规范允许 |
数组方法ECMAScript 3中的数组方法
这里
ECMAScript 5中的数组方法
b = [1, 2, 3].map(v => v * 2); // [2, 4, 6]
注意:
可能你注意到,上面第三个例子中 在空数组上,不带初始值参数调用
|
数组类型在
但是,在
使用instanceof的问题是在Web浏览器中有可能存在多个窗口或者窗体(iframe),每个窗口都有自己的JavaScript环境,有自己的全局对象,并且每个全局对象有自己的一组构造函数,因此一个窗体中的对象不可能是另外窗体中的构造函数的实例,举个例子来证明instanceof操作符不能视为一个可靠的数组检测方法:
很惊讶的发现 解决方案是检查对象的类属性,对数组而言该属性的值总是
实际上这也是 |
类数组对象我们已经看到,数组中有一些特性是其他对象所没有的:
这些特性让数组和常规的对象有明显的区别,但是它们不能定义数组的本质特性。一种常常完全合理的看法把拥有一个数值length属性和对应非负整数属性的对象看做一种类型的数组。 常见的如 **注意:**类数组对象没有继承自
|
前言
数组是值的有序集合。数组每个元素所处的位置以数字表示,称为索引。数组元素索引不一定要连续的,它们之间可以有空缺,每一个
JavaScript
数组都有一个length属性。针对非稀疏数组,该属性就是数组元素的个数,针对稀疏数组,length比所有元素的索引要大。JavaScript
数组是JavaScript
对象的特殊形式,数组的索引实际上碰巧是整数的属性名差不多。通常,数组的实现是经过优化的,用数字索引来访问数组一般来说比访问常规属性的对象要快很多。数组继承自
Array.prototype
中的属性,它定义了一套丰富的数组操作方法,大多数这些方法对‘类数组’也有效。The text was updated successfully, but these errors were encountered: