一、length
let arr = [1, 2, 3, 4, 5, 6, 7]
1. 获取数组的长度
console.log(arr.length) // 7
2. 通过下标修改值
arr[0] = 4; console.log(arr) // [4, 2, 3, 4, 5, 6, 7]
3. 通过length修改数组长度
arr.length = 2 console.log(arr) // [4, 2]
4. 清空数组
arr.length = 0 console.log(arr) // []
5. 增加length的长度
arr.length = 10 console.log(arr) // [1, 2, 3, 4, 5, 6, 7, empty × 3]
二、添加删除数组的API
1. push(); 往数组后面添加数据,( )写要新增的数据
let arr = [1, 2, 3] arr.push(4) console.log(arr) // [1, 2, 3, 4]
2. pop(); 删除数组的最后一个数据,( )里面不需要写任何内容,一次只能删一个,删除多个重复写
let arr = [1, 2, 3] arr.pop(); console.log(arr) // [1, 2]
3. unshift(); 往数组前面添加数据
let arr = [1, 2, 3] arr.unshfit(4); console.log(arr) // [4, 1, 2, 3]
4. shift(); 删除数组的第一个数据
let arr = [1, 2, 3] arr.shift() console.log(arr) // [2, 3]
5. splice(); 方法向/从数组中添加/删除项目,然后返回被删除的项目。 注释:该方法会改变原始数组
let arr = [1, 2, 3] arr.splice(1, 1, 4) // 删除下表为1 删除1个 替换为 4 console.log(arr) // [1, 4, 3] arr.splice(1, 0, 5) // 在下标为1 的地方新增5 console.log(arr) // [1, 5, 4, 3]
6. slice(); 从已有的数组中返回选定的元素
说明:该方法并不会修改原始数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
let arr = [1, 2, 3, 4, 5] let arr1 = arr.slice(1, 2) // 返回元素为arr数组中下标为2的元素的新数组 let arr2 = arr.slice(-2) // 从数组尾部获取两个元素 返回新的数组 console.log(arr1) // [2] 返回新的数组 console.log(arr2) // [4, 5] console.log(arr) // [1, 2, 3, 4, 5] 不会改变原始数组
三、数组的遍历(判断、查找、筛选)、调序、分合
1. 判断是否为数组
let arr = [1, 2, 3, 4] let flag = Array.isArray(arr) console.log(flag) // true
2. Array.from() 从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例
let str = "ananiah" let strArr = Array.from(str) // 将字符串转化为数组 console.log(strArr) // ['a', 'n', 'a', 'n', 'i', 'a', 'h']
3. concat(), split() 数组的分合
let arr = [1, 2, 3, 4] let arr1 = arr.join('-') console.log(arr1) // "1-2-3-4" let arr4 = arr1.split("-") console.log(arr4) // ["1", "2", "3", "4"] let arr2 = [5, 6, 7] let arr3 = arr.concat(arr2) console.log(arr3) // [1, 2, 3, 4, 5, 6, 7]
4. reverse() sort() 数据的调序 注意:sort()会改变原始数组
let arr = [1, 2, 3, 4] let arr1 = arr.reverse() // 反转数组顺序 console.log(arr1) //[4, 3, 2, 1] let arr2 = arr1.sort() 排序 console.log(arr2) // [1, 2, 3, 4] // sort() 升序 arr.sort(function(a,b){return a-b}); // [1, 2, 3, 4] // sort() 降序 arr.sort(function(a,b){return b-a}); // [4, 3, 2, 1]
5. 遍历
let arr = [1, 2, 3, 4] // map arr.map((item, i) => console.log(item, i)) // every,some,includes 判断 是否有满足条件的元素,返回boolean值 /** * every() 方法用于检测数组所有元素是否都符合指定条件 * 如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余* 的元素不会再进行检测。 * 如果所有元素都满足条件,则返回 true。 */ let a = arr.every(x=>x>3); // false /** * some() 方法用于检测数组中的元素是否满足指定条件 * 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检* 测。 * 如果没有满足条件的元素,则返回false */ let a = arr.some(x=>x>3); // true /** * includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 * * true,否则false * */ let a = arr.includes(2) // true // filter 筛选 返回满足条件的所有元素组成的一个新数组 let a = arr.filter(x=> x > 3) // [4] // find 查找 返回通过满足条件的第一个元素的值 let a = arr.find(x=> x > 3); // 4 // indexOf 查找,该方法既可操作数组,也可操作字符串 //返回-1时代表没有此项; 返回非负数时 代表当前元素(或元素首位)在原数组(或原字符串)中所处的位数 let a = arr.indexOf(2); // 1 if(a > -1) { // do something }
会改变原数组的: reverse, sort, splice
不会改变原数组的: slice, indexOf, join, concat, every, some,includes, filter, find, fill, reduce, forEach,map