目录
今天话不多说直接进入正题!
1. 创建数组对象
在JavaScript中,你可以通过以下方式创建数组:
// 使用数组字面量
let array1 = [1, 2, 3, 4, 5];
// 使用Array构造函数
let array2 = new Array(1, 2, 3, 4, 5);
// 创建一个空数组
let array3 = [];
2. 数组长度
使用length
属性来获取或设置数组的长度:
let array = [1, 2, 3];
console.log(array.length); // 输出 3
// 设置长度可以添加或删除元素
array.length = 2; // 现在数组只包含 [1, 2]
3. 遍历一个数组
你可以使用for
循环、for...of
循环或forEach
方法来遍历数组:
let array = [1, 2, 3, 4, 5];
// 使用for循环
for (let i = 0; i < array.length; i++) {
console.log(array[i]);
}
// 使用for...of循环
for (let element of array) {
console.log(element);
}
// 使用forEach方法
array.forEach(function(element) {
console.log(element);
});
4. 连接数组
使用concat
方法连接两个或多个数组:
let array1 = [1, 2, 3];
let array2 = [4, 5, 6];
let array3 = array1.concat(array2);
console.log(array3); // 输出 [1, 2, 3, 4, 5, 6]
5. 通过指定分隔符,返回一个数组的字符串表达
使用join
方法,通过指定分隔符将数组元素转换为字符串:
let array = ['a', 'b', 'c'];
let str = array.join(','); // 使用逗号作为分隔符
console.log(str); // 输出 "a,b,c"
6. 分别在最后的位置插入数据和获取数据(获取后删除)
使用push
方法添加元素到数组末尾,使用pop
方法移除并返回数组的最后一个元素:
let array = [1, 2, 3];
array.push(4); // 添加元素 4 到末尾
console.log(array); // 输出 [1, 2, 3, 4]
let lastElement = array.pop(); // 移除并返回最后一个元素
console.log(lastElement); // 输出 4
console.log(array); // 输出 [1, 2, 3]
7. 分别在最开始的位置插入数据和获取数据(获取后删除)
使用unshift
方法添加元素到数组开始,使用shift
方法移除并返回数组的第一个元素:
let array = [2, 3, 4];
array.unshift(1); // 添加元素 1 到开始
console.log(array); // 输出 [1, 2, 3, 4]
let firstElement = array.shift(); // 移除并返回第一个元素
console.log(firstElement); // 输出 1
console.log(array); // 输出 [2, 3, 4]
8. 对数组的内容进行排序
使用sort
方法对数组进行排序。默认情况下,它会将数组元素转换为字符串,然后按照字符的Unicode码点进行排序:
let array = [5, 1, 4, 2, 3];
array.sort(); // 默认排序,可能会得到不期望的结果
console.log(array); // 输出 [1, 2, 3, 4, 5] 或其他,取决于浏览器实现
// 使用自定义比较函数进行排序
array.sort(function(a, b) {
return a - b; // 升序排序
});
console.log(array); // 输出 [1, 2, 3, 4, 5]
9. 自定义排序算法
在JavaScript中,数组的sort()
方法允许你传入一个自定义的比较函数,以实现自定义排序。这个比较函数应该接收两个参数,并返回一个负数、零或正数,分别表示第一个参数应该排在第二个参数之前、相等或之后。
let array = [5, 1, 4, 2, 3];
// 自定义升序排序
array.sort(function(a, b) {
return a - b;
});
console.log(array); // 输出 [1, 2, 3, 4, 5]
// 自定义降序排序
array.sort(function(a, b) {
return b - a;
});
console.log(array); // 输出 [5, 4, 3, 2, 1]
10. 对数组的内容进行反转
数组的reverse()
方法用于反转数组中的元素顺序。
let array = [1, 2, 3, 4, 5];
array.reverse();
console.log(array); // 输出 [5, 4, 3, 2, 1]
11. 获取子数组
数组的slice()
方法用于提取数组的一部分浅拷贝到一个新数组对象,并返回这个新数组。原数组不会被改变。
let array = [1, 2, 3, 4, 5];
// 从索引1开始,提取到索引3(不包括索引3的元素)
let subArray = array.slice(1, 3);
console.log(subArray); // 输出 [2, 3]
// 如果只提供一个参数,则从该索引开始到数组末尾
let endArray = array.slice(2);
console.log(endArray); // 输出 [3, 4, 5]
12. 删除和插入元素
在JavaScript中,数组的splice()
方法是一种非常强大的工具,它可以在任何位置添加/删除项目,并返回被删除的项目。
删除元素
let array = [1, 2, 3, 4, 5];
// 从索引1开始,删除2个元素
let removedItems = array.splice(1, 2);
console.log(array); // 输出 [1, 4, 5]
console.log(removedItems); // 输出 [2, 3],这是被删除的元素
插入元素
let array = [1, 4, 5];
// 在索引1的位置插入2和3
array.splice(1, 0, 2, 3); // 第二个参数为0,表示不删除任何元素
console.log(array); // 输出 [1, 2, 3, 4, 5]
替换元素
let array = [1, 2, 3, 4, 5];
// 从索引1开始,替换2个元素为6和7
array.splice(1, 2, 6, 7);
console.log(array); // 输出 [1, 6, 7, 4, 5]
注意:splice()
方法会直接修改原数组。如果你不希望原数组被改变,可以先使用slice()
方法复制一份数组,再在新数组上使用splice()
。
练习题
编写一个JavaScript程序,该程序完成以下任务:
- 创建一个包含5个随机整数的数组(范围在1到100之间)。
- 使用
sort()
方法和自定义比较函数对该数组进行降序排序。 - 使用
slice()
方法获取数组的前三个元素,并存储在新的数组中。 - 使用
splice()
方法在原始数组的第二个位置插入一个新元素(值为100)。 - 使用
reverse()
方法反转原始数组。 - 输出原始数组、排序后的数组、子数组、插入元素后的数组以及反转后的数组。
源代码
// 1. 创建一个包含5个随机整数的数组(范围在1到100之间)
let originalArray = [];
for (let i = 0; i < 5; i++) {
originalArray.push(Math.floor(Math.random() * 100) + 1);
}
console.log('原始数组:', originalArray);
// 2. 使用sort()方法和自定义比较函数对该数组进行降序排序
originalArray.sort(function(a, b) {
return b - a;
});
console.log('排序后的数组:', originalArray);
// 3. 使用slice()方法获取数组的前三个元素,并存储在新的数组中
let subArray = originalArray.slice(0, 3);
console.log('子数组:', subArray);
// 4. 使用splice()方法在原始数组的第二个位置插入一个新元素(值为100)
originalArray.splice(1, 0, 100);
console.log('插入元素后的数组:', originalArray);
// 5. 使用reverse()方法反转原始数组
originalArray.reverse();
console.log('反转后的数组:', originalArray);
运行这段代码,你会看到控制台输出了题目要求的各个数组。注意,由于Math.random()
的使用,每次运行程序时原始数组的内容都会不同。
小结
今天就到这里了,期待下次相遇!
respect!