JS数组相关知识
数组常用方法
- 1.arr.push() 从后面添加元素,返回值为添加完后的数组的长度
- 2.arr.pop() 从后面删除元素,只能是一个,返回值是删除的元素
- 3.arr.shift() 从前面删除元素,只能删除一个,返回值是删除的元素
- 4.arr.unshift() 从前面添加元素,返回值是添加完后的数组的长度
- 5.arr.splice(i,n) 删除从i(索引值)开始之后的n个元素,返回值是删除的元素
- 6.arr.concat() 连接两个数组,返回值为连接后的新数组
- 7.str.split() 将字符串转化为数组
- 8.arr.sort() 将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序
- 9.arr.reverse() 将数组反转,返回值是反转后的数组
- 10.arr.slice(start,end) 切去索引值start到索引值end的数组,不包含end索引的值,返回值是切出来的数组
- 11.arr.forEach(callback) 遍历数组,无return callback的参数: value --当前索引的值,index --索引,array --原数组
- 12.arr.map(callback) 遍历数组,返回一个新数组
- 13.arr.filter(callback) 过滤数组,返回一个满足要求的数组
- 14.arr.every(callback) 依据判断条件,数组的元素是否全满足,若满足则返回ture
- 15.arr.some() 依据判断条件,数组的元素是否有一个满足,若有一个满足则返回ture
- 16.arr.reduce(callback, initialValue) 迭代数组的所有项,累加器,数组中的每个值(从左到右)合并,最终计算为一个值 callback的参数: previousValue 必选 --上一次调用回调返回的值,或者是提供的初始值(initialValue);currentValue 必选 --数组中当前被处理的数组项;index 可选 --当前数组项在数组中的索引值;array 可选 --原数组;initialValue: 可选 --初始值
- 17.arr.reduceRight(callback, initialValue) 与arr.reduce()功能一样,不同的是,reduceRight()从数组的末尾向前将数组中的数组项做累加
- 18.arr.indexOf() 查找某个元素的索引值,若有重复的,则返回第一个查到的索引值;若不存在,则返回 -1
- 19.arr.lastIndexOf() 和arr.indexOf()的功能一样,不同的是从后往前查找
- 20.Array.from() 用于将两类对象转为真正的数组
- 21.Array.of() 用于将一组值转换成数组 -22.arr.copyWithin() 在当前数组内部,将指定位置的数组复制到其他位置,会覆盖原数组项,返回当前数组 参数: target --必选 索引从该位置开始替换数组项; start --可选 索引从该位置开始读取数组项,默认为0,如果为负值,则从右往左读;end --可选 索引到该位置停止读取的数组项,默认是Array.length,如果是负值,表示倒数
- 23.arr.find(callback) 找到第一个符合条件的数组项
- 24.arr.findIndex(callback) 找到第一个符合条件的数组项的索引值
- 25.arr.fill(target, start, end) 使用给定的值,填充一个数组,填充完后会改变原数组。 参数:target – 待填充的元素;start – 开始填充的位置-索引;end – 终止填充的位置-索引(不包括该位置)
- 26.arr.includes() 判断数组中是否包含给定的值
- 27.arr.keys() 遍历数组的键名
- 28.arr.values() 遍历数组的键值
- 29.arr.entries() 遍历数组的键名和键值
- 30.arr.join() 将数组的元素组起一个字符串(原数组不变),默认用逗号为分隔符,该方法只接收一个参数:即分隔符
- 31.arr.fill() 用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。fill 方法接受三个参数 value,start 以及 end,start 和 end 参数是可选的,其默认值分别为 0 和 this 对象的 length 属性值。
类数组转数组的几种方式
- Array.prototype.slice.call(类数组)
- (es6中使用) Array.from(类数组)
- es6拓展运算符(要转为数组的必须具有iterator接口)扩展运算符不能将json格式的类数组对象转化成数组 [...arrs]
一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象,类数组对象和数组类似,但是不能调用数组的方法。
常见的类数组对象有 arguments 和 DOM 方法的返回结果,还有一个函数也可以被看作是类数组对象,因为它含有 length属性值,代表可接收的参数个数
JS常用的数组拼接方法
- concat(),拼接数组,arr1.concat(arr2)
- for循环逐个添加,没哟新数组创建,对内存友好
- apply() a.push.apply(a,b)
- es6新语法 a.push(...b)
判断数组的方法
① instanceof 操作符判断 用法:arr instanceof Array instanceof 主要是用来判断某个实例是否属于某个对象
②对象构造函数的 constructor判断 用法:arr.constructor === Array Object的每个实例都有构造函数 constructor,用于保存着用于创建当前对象的函数
③Array 原型链上的 isPrototypeOf 用法:Array.prototype.isPrototypeOf(arr) Array.prototype 属性表示 Array 构造函数的原型
Array.isArray 用法:Array.isArray(arr)