几乎所有的编程语言都原生支持数组类型,因为数组是最简单的内存数据结构。
数组是存储一系列同一种类型的值。相当于一个容器,(当然也可以存储不同类型的值),数据都会被存储在一个容器中,那么数据进入容器就会有一定的顺序和方法,先进后出,先进先出,末尾,开头,底部,顶部,等等。
创建数组:
或
访问元素和迭代数组:
for 循环:
在javascirpt中,数组是一个可以修改的对象。如果添加和删除元素,它就会动态增长和减少
在数据末尾插入元素:
let numbers = [0, 1, 2];
如果想要给数组添加一个元素,比如3,只要吧值赋给数组中最后一个空位的元素即可
numbers[numbers.length] = 3
但是我们可以使用数组的push方法
number.push(3);
当然,也可以添加多个元素
number.push(3, 4, 5);
在数组开头插入元素:
unshift 方法(意为在首部插入)
删除元素:
从数组末尾删除元素:numbers.pop();
通过push() 和 pop() 就可以模拟栈(后进先出)
用delete删除元素,但是元素的位置会被empty 占位
从数组开头删除元素(即删除数组的第一个元素):shift()
那么,在任意位置删除数组中的元素呢?
splice();
那我们想把刚才删除的元素又重新放回数组里呢?还是splice()方法
如果想把两个数组,还有对象,单个元素统统放到一个数组中:concat() 数组合并
以上方法是为了基于数据来模拟后边的数据接口栈push(),pop();方法即可来实现栈的数据结构特点。
此外因为数组这种数据结构应用广泛,它的方法还有很多:
every : 对数组中的每个元素运行给定的函数,如果该函数对每个元素都返回true,则返回true
filter:对数组中的每个元素运行给定函数,返回该函数返回true的元素组成的数组
forEach(): 对数组中的每个元素运行给定的函数。这个方法没有返回值
join()将所有的数组元素连接成一个字符串
indexOf() 返回一个于给定的参数相等的数组元素的索引,没有找到则返回-1
lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索
map() 对数组中的每一个元素运行给定的函数,返回每次函数执行的结果组成的数组
reverse()对数组中的元素逆向排序
slice()传入索引值,将数组里对应索引范围内的元素作为新数组返回
some() 对数组中中的每个元素运行给定的函数,如果任意一个元素返回true,则返回true
sort()按照字母顺序对数组进行排序
toString()将数组作为字符串返回
valueOf()和toString()类似,将数组作为字符串返回
ES6新增的数组方法:
@@iterator 返回一个包含数组键值对的迭代器对象,可以通过同步调用得到数组元素的键值对
copyWithin() 复制数组中的一系列元素到同一个数组指定的起始位置
entries 返回包含数组所有键值对的@@iterator
includes()如果数组中存在某个元素则返回true,否则返回false.
find() 根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素
findIndex() 根据回调函数给定的条件从数组中查找元素,如果找到则返回该元素的索引
fill() 用静态值填充数组
keys() 返回数组中所有索引的@@iterator
from() 根据已有数组创建一个新数组
of()根据传入的参数创建一个新数组
values()返回数组中所有索引的@@iterator
此外,附上一篇掘金网站看到的15种数组方法总结:
https://juejin.im/post/5ddc6ad8518825731161fa75