数组
语法:
[element0, element1, ..., elementN]
new Array(element0, element1[, ...[, elementN]])
new Array(arrayLength)
创建数组
使用数组直接量是创建数组最简单、最直观的方法,在方括号中将数组元素用逗号隔开即可。例如:
var empty = []; // 没有元素的空数组
var num = [1, 3, 5, 7, 9]; // 有 5 个数值的数组
var mixin = ['Bob', 20, true]; // 3 种不同元素的数组
调用构造函数 Array() 是创建数组的另一种方法。
调用时没有参数:
var empty = new Array(); // 没有元素的空数组
该方式创建了一个没有任何元素的空数组,等同于数组直接量[ ]
。
调用时传入一个数值参数,它指定数组的长度:
var len = new Array(5); // 指定长度的数组
这种方式用来创建指定长度
的数组。当预先知道所需元素个数时,这种方式可以用来预先分配一个数组空间。注意:
数组中没有存储值,不能认为它是包含 5个值为 undefined
元素的数组。
显示指定两个或多个数组元素:
var mixin = new Array('Bob', 20, true); // 3 种不同元素的数组
构造函数的参数将会成为新数组的元素,等同于数组直接量:
var mixin = ['Bob', 20, true]; // 3 种不同元素的数组
数组长度
每个数组都有一个length
属性,length
属性值代表数组中元素的个数
。
var empty = []; // 数组没有元素
var letters = ['a', 'b', 'c', 'd']; // 数组有 5 个元素
console.log(empty.length); // 0
console.log(letters.length); // 5
访问和修改数组元素
数组创建完成后,我们可以[ ]
操作符访问数组中的元素
,数组的引用位于方括号左边。 方括号中是一个返回非负整数的任意表达式
。使用该语法即可以访问数组中的元素
,又可以修改数组中的元素
。
var letters = ['a', 'b', 'c', 'd'];
console.log(letters[0]); // 访问索引为 0 的元素 'a'
console.log(letters[4 - 2]); // 访问索引为 2 的元素 'c'
letters[1] = 1; // 修改索引为 1 的元素 ['a', 1, 'c', 'd']
letters[1 + 2] = 3; // 修改索引为 3 的元素 ['a', 1, 'c', 3]
添加和删除数组元素
添加数组元素最简单的方式是为新索引赋值:
var heroes = []; // 创建空数组
heroes[0] = '孙悟空'; // 然后通过索引向其中添加元素
heroes[1] = '孙策';
也可以使用 push() 方法在数组末尾增加一个或多个元素:
var heroes = []; // 创建空数组
heroes.push('曹操'); // 在数组的末尾添加一个元素 ['曹操']
heroes.push('刘备', '孙策'); // 再添加两个元素 ['曹操', '刘备', '孙策']
在数组末尾压入一个元素与给数组长度索引赋值是一样的:
heroes[heroes.length] = '韩信'; // 在数组的末尾添加一个元素
也可以使用 unshift() 方法在数组的开始添加一个或多个元素,并返回新数组的长度。
var heroes = ['嬴政'];
heroes.unshift('刘邦'); // 在数组的开始添加一个元素 ['刘邦', '嬴政'] heroes.unshift('韩信', '张良'); // 再添加两个元素 ['韩信', '张良', '刘邦', '嬴政']
说完了添加元素,我们来谈谈怎样删除元素。
改变数组的长度
var heroes = ['刘邦', '张良', '韩信', '萧何','刘备', '孙策'];
// 通过改变数组的长度删除元素
heroes.length = 4;
console.log(heroes) // ['刘邦', '张良', '韩信', '萧何'];
使用pop() 方法从数组的结尾弹出一个元素
var heroes = ['刘邦', '张良', '韩信', '萧何','刘备', '孙策'];
heroes.pop(); // ['刘邦', '张良', '韩信', '萧何','刘备'];
使用 shift() 从数组的开始删除一个元素
var heroes = ['刘邦', '张良', '韩信', '萧何','刘备'];
heroes.shift(); // ['张良', '韩信', '萧何','刘备'];
使用 splice() 方法删除数组中多个元素
var heroes = ['刘邦', '张良', '韩信', '萧何','刘备'];
heroes.splice(1, 2); // ['刘邦', '萧何','刘备'];
数遍历数组
使用 for 循环遍历数组:
var heroes = ['刘邦', '张良', '韩信', '萧何','刘备'];
var len = heroes.length;
for (var i = 0; i < len; i++) {
console.log(heroes[i])
}
使用 forEach() 方法遍历数组:
heroes.forEach(function(value, index){
console.log(value, index)
})
数组方法
join()
:将数组的各个元素以指定的分隔符链接成一个字符串。
// 以指定的分隔符将数组元素拼接成字符串
var heroes = ['刘邦', '张良', '韩信', '萧何','刘备'];
console.log(heroes.join('#')); // 刘邦#张良#韩信#萧何#刘备
reverse():颠倒数组元素的顺序
var num = [1, 2, 3, 4, 5];
console.log(num.reverse()); // [5, 4, 3, 2, 1]
concat() 合并多个数组
var heroes1 = ['刘邦', '张良', '韩信'];
var heroes2 = ['刘备', '张飞', '关羽'];
var heroes3 = ['你', '我', '他'];
var allHeroes = heroes1.concat(heroes2, heroes3);
console.log(allHeroes);
// 合并结果:['刘邦', '张良', '韩信', '刘备', '张飞', '关羽', '你', '我', '他']
sort() 对数组中的元素进行排序
slice(start, end)
:方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象。且原始数组不会被修改。
var heroes1 = ['刘邦', '张良', '韩信', '刘备', '张飞', '关羽'];
var heroes2 = heroes1.slice(2, 5); // ['韩信', '刘备', '张飞']
var heroes3 = heroes1.slice(2); // ['韩信', '刘备', '张飞', '关羽']
var heroes4 = heroes1.slice(-4); // ['韩信', '刘备', '张飞', '关羽']
var heroes5 = heroes1.slice(-4, -2); // ['韩信', '刘备']
var heroes6 = heroes1.slice(-4, 3); // ['韩信']
console.log(heroes2);
console.log(heroes3);
console.log(heroes4);
console.log(heroes5);
console.log(heroes6);
splice(start, [deleteCount, [item1, item2, …]])
只传入一个参数stra
t,从 start
位置开始截取
,直到数组结尾。
var heroes1 = ['刘邦', '张良', '韩信', '刘备', '张飞', '关羽'];
var heroes2 = heroes1.splice(2); console.log(heroes1); // ['刘邦', '张良'] console.log(heroes2); // ['韩信', '刘备', '张飞', '关羽']
传入 start 和 deletCount,从 start 位置开始截取,截取 deleteCount 个元素。
传入 start, deletCount 和 item1,从 start 位置开始截取,截取 deleteCount 个元素。
var heroes3 = heroes1.splice(2, 3, '你', '我', '他');
console.log(heroes1); // ['刘邦', '张良', '你', '我', '他', '关羽']; console.log(heroes3); // ['韩信', '刘备', '张飞']
如果 deleteCount 为 0 ,则表示只插入新元素,不删除原有的元素。
var heroes4 = heroes1.splice(2, 0, '你', '我', '他');
console.log(heroes1);
// ['刘邦', '张良', '你', '我', '他', '韩信', '刘备', '张飞', '关羽'] console.log(heroes4); // []