- 数组用一组连续的内存空间来存储一组具有相同类型的数据,JavaScript可以存储不同类型的值
- 优点:1)使查询高效 2)实现随机存取(索引)
- 缺点:插入、删除时,需移动元素多
- JS中的使用(定义、使用、查找、删除)
数组的定义
// 1. 普通方式
const arr1 = new Array();
// 2. 指定长度
const arr2 = new Array(5);
// 3. 指定内容
const arr3 = new Array("one", "two");
// 4. 使用[]
const arr4 = [1, 2, 3, 4];
长度与遍历
// 获取长度
const arr = [1, 2, 3, 4];
let len = arr.length; // 4
/* 遍历 */
// 1. 使用 for
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
// 2. 使用数组的 foreach(function) 函数
arr.forEach((value) => console.log(value));
// 3. 使用 for...in
// // 注意当给数组添加了属性后,for...in 会把这个这个属性也遍历出来
for(let index in arr){
console.log(arr[index]);
}
// 4. 使用 for...of
for (let value of arr) {
console.log(value);
}
//插入
/* 添加元素 newValue*/
// 1. 添加到任意位置(index)
for (let i = arr.length; i > index; i--) {
arr[i] = arr[i-1];
}
arr[index] = newValue;
// 2. 数组末尾添加元素
arr[arr.length] = newValue;
// 3. 使用数组的 push() 函数在数组末尾添加元素
// 返回新数组的长度
let newLength = arr.push(newValue);
arr.push(newValue1, newValue2, ...);
// 4. 使用数组的 unshift() 函数在数组的开头添加元素
// unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
let newLength = arr.unshift(newValue1, newValue2, ...);
// 5. 使用 splice() 方法用于添加或删除数组中的元素
let arr6 = [1,2,3,4];
// 第一参数代表 插入位置的索引
// 第二个参数,可以理解为用第二个参数后面的参数来替换其的长度
// 返回被删除的元素数组,如果为添加元素,则返回空数组
let deleteArr = arr6.splice(2, 0, newValue1, newValue2, newValue3);
// [1, 2, newValue1, newValue2, newValue3, 3, 4]
//产出
// 1. 快速清空数组
arr.length = 0;
// 2. 删除末尾元素
// 使用 pop() 删除数组的最后一个元素并返回删除的元素
let lastEle = arr.pop();
// 3. 删除首元素
// 使用 shift() 删除数组的第一个元素,并返回第一个元素的值。
let firstEle= arr.shift();
// 4. 删除任意位置元素
// 4.1 从要删除元素的位置对整个数组进行移位,后一个元素覆盖掉前一个元素的值
// 4.2 使用 splice(start,length) 元素
- JS常用数组方法
方法名 | 功能 | 返回值 |
sort() | 用于对数组的元素进行升降排序,默认排序顺序为按字母升序,当数字是按字母顺序排列时"40"将排在"5"前面。使用数字排序,必须通过一个函数作为参数来调用。函数指定数字是按照升序还是降序排列。 | 返回排序后的数组 |
reverse() | 用于颠倒数组中元素的顺序 | 返回反转后的数组 |
pop() | 删除数组的最后一个元素并返回删除的元素 | 返回删除的元素,如果数组为空,返回undefine |
shift() | 用于把数组的第一个元素从其中删除,并返回第一个元素的值 | 返回删除的元素,如果数组为空,返回undefine |
push() | 向数组的末尾添加一个或多个元素 | 返回新数组的长度 |
unshift() | 可向数组的开头添加一个或更多元素,并返回新的长度 | 返回新数组的长度 |
splice() | 用于添加或删除数组中的元素 | 返回被删除的元素数组,如果为添加元素,则返回空数组 |
fill() | 用于将一个固定值替换数组的元素 | 返回一个数组 |
concat() | 用于连接两个或多个数组(该参数可以是具体的值,也可以是数组对象。可以是任意多个) | 会返回被连接数组的一个副本 |
every() | 用于检测数组所有元素是否都符合指定条件, every() 不会对空数组进行检测 | 所有元素都满足条件,则返回 true,否则返回false |
filter() | 创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素 | 返回通过过滤的新数组 |
find() | 返回通过测试(函数内判断)的数组的第一个元素的值 | 有满足函数条件的情况下返回元素,否则返回 undefine |
findIndex() | 返回传入一个测试条件(函数)符合条件的数组第一个元素位置 | 有满足函数条件的情况下返回元素索引,否则返回 -1 |
includes() | 来判断一个数组是否包含一个指定的值 | 返回 true/false(可判断NaN) |
indexOf() / lastIndexOf() | 数组中某个指定的元素第一次/最后一次出现的位置 | 如果寻找元素存在,返回其索引,否则返回-1 |
map() | 返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值 | 返回一个原数组等长度的数组 |
some() | 用于检测数组中的元素是否满足指定条件(函数提供) | 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测,否则返回false |
join() | 用于把数组中的所有元素转换成一个通过指定的分隔符进行分隔的字符串 | 字符串 |
reduce() | 接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值 | 返回计算结果 |
reduceRight() | 功能和 reduce() 功能是一样的,不同的是 reduceRight() 从数组的末尾向前将数组中的数组项做处理 | 返回计算结果 |
slice() | 从已有的数组中返回选定的元素 | 返回形参范围内左闭右开的元素组成的数组 |