数组


上次更新时间:8/4/2020, 8:24:44 PM 0

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

# 创建

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

# 属性

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

prototype(原型) 属性使用

每个对象都有 prototype 属性,数组也是对象。具体可看对象章节。

constructor 属性使用

每个对象都会从原型上继承一个 constructor 属性。


1

# 数组方法

方法名 功能 是否会改变原数组
pop() 删除数组最后一个元素,并返回被删除元素 Y
push() 在数组末尾添加元素,并返回新的长度 Y
shift() 删除数组第一个元素,并返回被删除元素 Y
unshift() 在数组开头添加元素,并返回新的长度 Y
reverse() 颠倒原有数组的排序,并返回结果 Y
sort() 按照 ASCII 字符排序,返回结果 Y
splice(index) 删除指定位置,并替换,返回删除的数据 Y
indexOf() 返回某个指定的字符串值在字符串中首次出现的位置。没有出现则返回-1 N
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']
1
2
3
4
5
6
7
8
方法名 功能 备注
Array.from() 用于将”类似数组的对象“和”可遍历对象“转为真正的数组
Array.of() 用于将一组值,转换为数组
Array.isArray() 判断是否是数组,返回一个布尔值

# 实例方法

使用:

var arr = [1, 2, 3].concat([4,5,6])
console.log(arr); // [1,2,3,4,5,6]
1
2
方法名 功能 是否会改变原数组
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() 【查找】返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1 N
flat(deep) 【降维】扁平化数组,可传入数组维度 N
flatMap() 【降维】对原数组的每个成员执行一个函数,对返回值组成的数组执行flat()方法 N
reduce() 【累加】接收一个函数作为累加器, 数组中每个值(从左到右)开始缩减, 最终为一个值 N
reduceRight() 【累加】与reduce顺序相反,将数组元素计算为一个值(从右到左) N

# 常见数组操作

# 遍历

《遍历数组的12种方法》

# 合并

《数组合并方法总结》

# 去重

《数组去重方法总结》

# 排序

《数组排序方法总结》

# 拷贝

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

# 检测

  1. 《数据类型检测》

  2. Array.isArray()

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

# 类数组转换

《类数组对象介绍》

# 数组降维/扁平化

《数组降维方法总结》

上次更新时间: 8/4/2020, 8:24:44 PM