飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

JS数据类型:数组

时间:2021-11-25  作者:匿名  

数组是一种特殊的对象。使用方括号来访问属性 arr[0] 实际上是来自于对象的语法。它其实与 obj[key] 相同,其中 arr 是对象,而数字用作键(key)。

数组声明

创建一个空数组有两种语法:

let arr = new Array();
let arr = [];

绝大多数情况下使用的都是第二种语法。我们可以在方括号中添加初始元素:

let fruits = ["Apple", "Orange", "Plum"];

数组元素从 0 开始自动编号。

我们可以通过方括号中的数字获取元素:

let fruits = ["Apple", "Orange", "Plum"];
alert( fruits[0] ); // Apple
alert( fruits[1] ); // Orange
alert( fruits[2] ); // Plum

可以替换元素:

fruits[2] = 'Pear'; // 现在变成了 ["Apple", "Orange", "Pear"]

或者向数组新加一个元素:

fruits[3] = 'Lemon'; // 现在变成 ["Apple", "Orange", "Pear", "Lemon"]

length 属性的值是数组中元素的总个数:

let fruits = ["Apple", "Orange", "Plum"];
alert( fruits.length ); // 3

也可以用 alert 来显示整个数组。

let fruits = ["Apple", "Orange", "Plum"];
alert( fruits ); // 弹出提示 内容为:Apple,Orange,Plum

数组可以存储任何类型的元素。

// 混合值
let arr = [ 'Apple', { name: 'John' }, true, function() { alert('hello'); } ];
// 获取索引为 1 的对象然后显示它的 name
alert( arr[1].name ); // John
// 获取索引为 3 的函数并执行
arr[3](); // hello

pop/push, shift/unshift 方法

队列(queue)是最常见的使用数组的方法之一。

pop

取出并返回数组的最后一个元素:

let fruits = ["Apple", "Orange", "Pear"];
alert( fruits.pop() ); // 移除 "Pear" 然后 alert 显示出来
let one = fruits.pop();// 移除 "Pear" 然后 保存到 one变量中
alert( fruits ); // Apple, Orange  这个时候数组fruits只剩下2个元素了。

push

在数组末端添加元素:

let fruits = ["Apple", "Orange"];
fruits.push("Pear");
alert( fruits ); // Apple, Orange, Pear 这个时候,数组多了一个元素

作用于数组首端的方法:

shift

取出数组的第一个元素并返回它:

let fruits = ["Apple", "Orange", "Pear"];
alert( fruits.shift() ); // 移除 Apple 然后 alert 显示出来
alert( fruits ); // Orange, Pear

unshift

在数组的首端添加元素:

let fruits = ["Orange", "Pear"];
fruits.unshift('Apple');
alert( fruits ); // Apple, Orange, Pear

push 和 unshift 方法都可以一次添加多个元素:

let fruits = ["Apple"];
fruits.push("Orange", "Peach");
fruits.unshift("Pineapple", "Lemon");
// ["Pineapple", "Lemon", "Apple", "Orange", "Peach"]
alert( fruits );

性能对比

push/pop 方法运行的比较快,而 shift/unshift 比较慢。

原因是添加和移除最后一个内容的时候,前面的都不需要变化,而删除第一个元素的时候,后面的所有元素都需要向前推进一步,因为arr[0]被移走了,arr[1]要前移变成arr[0],就好像排队取票一样,第一个人走了,所有人要向前走,但是最后一个人走了,大家都不需要动。

循环

遍历数组最古老的方式就是 for 循环:

let arr = ["Apple", "Orange", "Pear"];
for (let i = 0; i < arr.length; i++) {
  alert( arr[i] );
}

数组来说还有另一种循环方式,for..of

let fruits = ["Apple", "Orange", "Plum"];
// 遍历数组元素
for (let fruit of fruits) {
  alert( fruit );
}

for..of 不能获取当前元素的索引,只是获取元素值,但大多数情况是够用的。而且这样写更短。

关于 “length”

当我们修改数组的时候,length 属性会自动更新。准确来说,它实际上不是数组里元素的个数,而是最大的数字索引值加一。

例如,一个数组只有一个元素,但是这个元素的索引值很大,那么这个数组的 length 也会很大:

let fruits = [];
fruits[123] = "Apple";
alert( fruits.length ); // 124

因此,我们要避免这种自定义索引的写法。

new Array()

这是创建数组的另一种语法:

let arr = new Array("Apple", "Pear", "etc");

它很少被使用,因为方括号 [] 更短更简洁。

多维数组

数组里的项也可以是数组。我们可以将其用于多维数组,例如存储矩阵:

let matrix = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];
alert( matrix[1][0] ); // 这样我们将得到 4

toString

数组有自己的 toString 方法的实现,会返回以逗号隔开的元素列表。

例如:

let arr = [1, 2, 3];
alert( arr ); //返回 1,2,3
alert( String(arr) === '1,2,3' ); // true

此外,我们试试运行一下这个:

alert( [] + 1 ); // "1"
alert( [1] + 1 ); // "11"
alert( [1,2] + 1 ); // "1,21"

我们会发现,输出的时候,数组自动转换成了字符串。

搜你所爱
JavaScript基础教程:目录
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。