JavaScript基础 - 数组

644 阅读4分钟

数组也是对象,于在变量中存储多个值。

创建

  1. 字面-隐式创建
var fruits = ['Apple', 'Banana'];
  1. 常规方式 - 通过构造函数Array()创建
var arr = new Array()
arr[0] = 'tony'
arr[1] = 'jenny'
  1. 简洁方式 - 通过构造函数Array()创建
var arr = new Array('tony', 'jenny')

属性

  • length —— 设置或返回数组元素的个数。
  • prototype —— 允许你向数组对象添加属性或方法。
  • constructor —— 返回创建数组对象的原型函数。

数组也是对象,每个对象都有 prototype 属性。每个对象都会从原型上继承一个 constructor 属性。

数组方法

方法名功能是否会改变原数组
pop()删除数组最后一个元素,并返回被删除元素Y
push()在数组末尾添加元素,并返回新的长度Y
shift()删除数组第一个元素,并返回被删除元素Y
unshift()在数组开头添加元素,并返回新的长度Y
reverse()颠倒原有数组的排序,并返回结果Y
sort()按照 ASCII 字符排序,返回结果Y
splice(index)删除指定位置,并替换,返回删除的数据Y
indexOf()返回某个指定的字符串值在字符串中首次出现的位置。没有出现则返回-1N
lastIndexOf()返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索N
join()通过指定分隔符将数组元素放入一个字符串N
slice(star, end)返回从start 到 end 的一个子数组N
toString()把数组转换为字符串,并返回结果N
valueOf()返回数组对象的原始值N

ES6拓展

原型方法

使用:

let arrayLike = {
    '0': 'a',
    '1': 'b',
    '2': 'c',
    length: 3
};

let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
方法名功能备注
Array.from()用于将”类似数组的对象“和”可遍历对象“转为真正的数组
Array.of()用于将一组值,转换为数组
Array.isArray()判断是否是数组,返回一个布尔值

实例方法

使用:

var arr = [1, 2, 3].concat([4,5,6])
console.log(arr); // [1,2,3,4,5,6]
方法名功能是否会改变原数组
concat()【合并】合并数组,并返回结果(新数组)N
forEach()【遍历】遍历数组N
map()【遍历】遍历数组通过指定函数处理数组的每个元素,并返回处理后的数组N
entries()【遍历】遍历数组, 对键值对的遍历N
keys()【遍历】遍历数组, 对键名的遍历N
values()【遍历】遍历数组, 对键值的遍历N
includes()【检测】某个数组是否包含给定的值, 结果返回一个布尔值N
filter()【检测】检测数值元素,并返回符合条件所有元素的数组N
every()【检测】检测数值元素的每个元素是否都符合条件N
some()【检测】检测数组元素中是否有元素符合指定条件N
copyWithin()【覆盖】将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。Y
fill()【覆盖】使用给定值,填充一个数组Y
find()【查找】查询:找出第一个符合条件的数组成员N
findIndex()【查找】返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1N
flat(deep)【降维】扁平化数组,可传入数组维度N
flatMap()【降维】对原数组的每个成员执行一个函数,对返回值组成的数组执行flat()方法N
reduce()【累加】接收一个函数作为累加器, 数组中每个值(从左到右)开始缩减, 最终为一个值N
reduceRight()【累加】与reduce顺序相反,将数组元素计算为一个值(从右到左)N

常见数组操作

遍历

《遍历数组的12种方法》

合并

《数组合并方法总结》

去重

《数组去重的11种方法》

排序

《数组排序方法总结》

拷贝

《深拷贝与浅拷贝的实现》

检测

  1. 《数据类型检测》

  2. Array.isArray()

var arr = [];
Array.isArray(arr); // true

类数组转换

《类数组对象介绍》

数组降维/扁平化

《数组降维方法总结》