JS数组知识

76 阅读4分钟

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 属性值。

类数组转数组的几种方式

  1. Array.prototype.slice.call(类数组)
  2. (es6中使用) Array.from(类数组)
  3. es6拓展运算符(要转为数组的必须具有iterator接口)扩展运算符不能将json格式的类数组对象转化成数组 [...arrs]

一个拥有 length 属性和若干索引属性的对象就可以被称为类数组对象,类数组对象和数组类似,但是不能调用数组的方法。

常见的类数组对象有 arguments 和 DOM 方法的返回结果,还有一个函数也可以被看作是类数组对象,因为它含有 length属性值,代表可接收的参数个数

JS常用的数组拼接方法

  1. concat(),拼接数组,arr1.concat(arr2)
  2. for循环逐个添加,没哟新数组创建,对内存友好
  3. apply() a.push.apply(a,b)
  4. 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)