1. JavaScript中的数组
JavaScript中的数组是一种数据类型,用于存储多个数据。当程序需要处理一堆相同类型的数据时,数组是非常有用的。
在JavaScript中,可以通过字面量或构造函数创建数组,例如:
// 通过字面量创建数组
var arr1 = [1, 2, 3, 'hello', true];
// 通过构造函数创建数组
var arr2 = new Array(1, 2, 3, 'hello', true);
两种方式的结果都是相同的,即创建了一个包含相同数据的数组。
1.1 数组的常用方法
JavaScript提供了丰富的数组操作方法,常用的有以下几种:
push():向数组的末尾添加一个或多个元素,并返回新的长度。
pop():从数组的末尾移除一个元素,并返回该元素的值。
shift():从数组的开头移除一个元素,并返回该元素的值。
unshift():向数组的开头添加一个或多个元素,并返回新的长度。
concat():将两个或多个数组合并成一个新数组。
slice():截取数组的一部分,返回一个新数组。
splice():从数组中添加或删除元素,并返回被删除的元素。
join():将数组中所有元素拼接成一个字符串,中间用指定字符分隔。
reverse():将数组中的元素顺序颠倒。
sort():对数组中的元素排序。
indexOf():返回指定元素在数组中的位置,如果不存在返回-1。
lastIndexOf():返回指定元素在数组中最后一次出现的位置,如果不存在返回-1。
下面是一些常用数组方法的示例:
var arr = [1, 2, 3];
// push()
var length1 = arr.push(4, 5);
console.log(arr); // [1, 2, 3, 4, 5]
console.log(length1); // 5
// pop()
var item1 = arr.pop();
console.log(arr); // [1, 2, 3, 4]
console.log(item1); // 5
// shift()
var item2 = arr.shift();
console.log(arr); // [2, 3, 4]
console.log(item2); // 1
// unshift()
var length2 = arr.unshift(0, 1);
console.log(arr); // [0, 1, 2, 3, 4]
console.log(length2); // 5
// concat()
var arr2 = [5, 6, 7];
var arr3 = arr.concat(arr2);
console.log(arr3); // [0, 1, 2, 3, 4, 5, 6, 7]
// slice()
var arr4 = arr.slice(1, 3);
console.log(arr4); // [1, 2]
// splice()
var removed = arr.splice(2, 1, 'a', 'b');
console.log(arr); // [0, 1, "a", "b", 3, 4]
console.log(removed); // [2]
// join()
var str1 = arr.join('-');
console.log(str1); // '0-1-a-b-3-4'
// reverse()
arr.reverse();
console.log(arr); // [4, 3, "b", "a", 1, 0]
// sort()
arr.sort();
console.log(arr); // [0, 1, 3, 4, "a", "b"]
// indexOf()
var index1 = arr.indexOf(3);
console.log(index1); // 2
// lastIndexOf()
var index2 = arr.lastIndexOf(3);
console.log(index2); // 2
1.2 for循环和forEach()方法
在JavaScript中,可以使用for循环遍历数组中的元素。通常使用for循环的方式有以下两种:
普通for循环
for...in循环
下面分别是两种方式的示例:
var arr = [1, 2, 3];
// 普通for循环
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
// for...in循环
for (var index in arr) {
console.log(arr[index]);
}
虽然使用for循环可以遍历数组中的元素,但是在ES5中,数组提供了更加方便的遍历方式,即forEach()方法。forEach()方法接受一个回调函数作为参数,该回调函数接受三个参数,分别是数组元素、元素索引和数组本身。下面是一个使用forEach()方法遍历数组的示例:
var arr = [1, 2, 3];
arr.forEach(function(item, index, array) {
console.log(item);
});
需要注意的是,forEach()方法不允许在回调函数中使用break、return等关键字跳出循环。如果需要跳出循环,可以使用普通for循环或for...in循环。
2. JavaScript中的循环嵌套
在某些场景下,需要遍历多重数组或对象,这时可以使用循环嵌套来实现。在JavaScript中,常用的循环嵌套有以下几种:
普通for循环嵌套
for...in循环嵌套
for...of循环嵌套
2.1 普通for循环嵌套
普通for循环嵌套的语法比较简单,通常是在外层循环中套用内层循环,例如:
var arr = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
上面的示例中,外层循环遍历数组中的每个子数组,内层循环遍历子数组中的每个元素。
2.2 for...in循环嵌套
for...in循环嵌套的语法与普通for循环嵌套相似,只需在外层循环中使用for...in循环即可,例如:
var obj = {
a: [1, 2, 3],
b: [4, 5, 6],
c: [7, 8, 9]
};
for (var key in obj) {
for (var i = 0; i < obj[key].length; i++) {
console.log(obj[key][i]);
}
}
上面的示例中,外层循环遍历对象中的每个属性,内层循环遍历属性对应的数组中的每个元素。
2.3 for...of循环嵌套
for...of循环是ES6中新增的循环语法,可以方便地遍历数组、字符串、Map、Set等可迭代对象。for...of循环嵌套语法与for...in循环嵌套类似,只不过使用的是for...of循环。例如:
var arr = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
for (var item of arr) {
for (var i of item) {
console.log(i);
}
}
上面的示例中,外层循环遍历数组中的每个子数组,内层循环遍历子数组中的每个元素。
3. 结论
在JavaScript中,数组是一种非常常用的数据类型,可通过字面量或构造函数创建。JavaScript提供了丰富的数组方法,可以方便地对数组进行操作。在遍历数组时,可以使用普通for循环、for...in循环和forEach()方法。另外,在处理多重数组或对象时,还可以使用循环嵌套。