IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript数组类型 -> 正文阅读

[JavaScript知识库]JavaScript数组类型

1. 定义

? 数组就是按次序排列的一组值。每个值的位置都有编号(从0开始),整个数组用方括号表示。

var arr = [1, 2, 3]

任何类型的数据都可以放入数组。

var arr = [
    {a: 1},
    [1, 2, 3],
    function() {
        return false;
    }
]

多维数组

var arr = [[1, 2], [3, 4]];

2. 数组的本质

本质上,数组是一种特殊的对象。对数组typeof时会返回object

typeof [1, 2, 3] // "object"

既然对数组typeof会返回object
那么数组的特殊性就体现在这,数组的索引会被当作键名,键名是按次序排列的整数。

var arr = [1, 2, 3];
Object.keys(arr);
// ["0", "1", "2"]

JavaScript规定,对象的键名一律为字符串,所以,数组的键名其实也是字符串。所以可以使用数值读取,是因为非字符串的键名会自动转为字符串。

var arr = ['a', 'b', 'c'];
arr['0'] // 'a'
arr[0]	 // 'a'

3. length属性

数组的length属性,返回数组的成员数量

['a', 'b', 'c'].length //3

JavaScript使用32位整数储存数组元素个数,也就是说,数组成员最多只有2^32-1个,length属性的最大值就是2^32-1(4294967295)


length是可写的,如果手动设置一个小于当前元素的个数的值,该数组的成员数量会减少到 length 设置的值。

var arr = [ 'a', 'b', 'c' ];
arr.length // 3

arr.length = 2;
arr // ["a", "b"]

清空数组的一个有效方法,将length属性设置成0

var arr = [ 'a', 'b', 'c' ];

arr.length = 0;
arr // []

相反,如果设置 length 属性大于当前元素个数,则数组的成员数量会增加到这个值。新增的值都是空位

var a = ['a'];

a.length = 3;
a[1] // undefined

如果将 length 设置成不合法的值,JavaScript会报错。

// 设置负值
[].length = -1
// RangeError: Invalid array length

// 数组元素个数大于等于2的32次方
[].length = Math.pow(2, 32)
// RangeError: Invalid array length

// 设置字符串
[].length = 'abc'
// RangeError: Invalid array length

值得注意的是,数组本质上是一种对象,所以可以为对象添加属性。但这并不影响length的值。(添加的属性不为整数时)

var a = [];

a['p'] = 'abc';
a.length // 0

a[2.1] = 'abc';
a.length // 0

length 属性的值就是最大数字键加1。

var arr = []
arr[100] = 1
arr.length // 101

如果数组的键名超出范围,键名会自动转换为字符串。

var arr = [];
arr[-1] = 'a';
arr[Math.pow(2, 32)] = 'b';

arr.length // 0
arr[-1] // "a"
arr[4294967296] // "b"

4. in 运算符

可以检查某个键名是否存在,适用于对象,适用于数组

var arr = [ 'a', 'b', 'c' ];
2 in arr  // true
'2' in arr // true
4 in arr // false

如果数组的某个位置是空位,in 运算符返回false


5. for … in 循环和数组的遍历

for ... in 可以遍历数组

var a = [1, 2, 3];

for (var i in a) {
  console.log(a[i]);
}
// 1
// 2
// 3


var a = [1, 2, 3];
a.foo = true;

for (var key in a) {
  console.log(key);
}
// 0
// 1
// 2
// foo

6. 数组的空位

当数组的某个位置是空元素,即两个逗号之间没有任何值,我们称该数组存在空位(hole)。

var a = [1, , 1];
a.length // 3

数组的空位读取时会返回undefined

var a = [, , ,];
a[1] // undefined

可以使用 delete 删除一个数组成员,这样会形成空位,并且不会影响 length 属性。

var a = [1, 2, 3];
delete a[1];

a[1] // undefined
a.length // 3

数组的某个位置是空位,与某个位置是undefined,是不一样的。如果是空位,使用数组的forEach方法、for...in结构、以及Object.keys方法进行遍历,空位都会被跳过。

var a = [, , ,];

a.forEach(function (x, i) {
  console.log(i + '. ' + x);
})
// 不产生任何输出

for (var i in a) {
  console.log(i);
}
// 不产生任何输出

Object.keys(a)
// []

如果某个位置是undefined,遍历的时候就不会被跳过。

var a = [undefined, undefined, undefined];

a.forEach(function (x, i) {
  console.log(i + '. ' + x);
});
// 0. undefined
// 1. undefined
// 2. undefined

for (var i in a) {
  console.log(i);
}
// 0
// 1
// 2

Object.keys(a)
// ['0', '1', '2']
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章           查看所有文章
加:2021-11-27 09:48:55  更:2021-11-27 09:51:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 21:17:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码