聊聊在javascript中数组的使用

杂谈

    数组是最简单的内存数据结构,也是js中最经常使用的类型之一,整理了下我以为应该了解数组的相关知识。算法

  1. 在js中,数组里能够容纳容纳js中任何类型的值。
  2. 在声明数组后就能够向数组中插入值,不须要设定什么。
  3. 数组的大小是动态的,能够根据数据的增长而自动增加。
  4. js只支持一维数组,并不支持矩阵(二维数组)。可是,咱们能够经过数组嵌套,实现矩阵或任意多维数组。
  5. 数组的项数就保存在它的length属性中,这个属性的值始终会大于等于0,而且length属性并非只读属性,经过使用length能够对数组进行修改操做。
  6. 判断一个对象是否是数组,Array.isArray( ) ES5新增

方法大全

在js中数组是可修改的对象,每一个数组都有着不少好用的方法,大多数咱们平常都会经常使用。
1.建立数组数组

  • 使用Array的构造函数 new Array( )
    new操做符能够省略
let newArr = new Array()
  • 数组字面量表示法
    由[]表示,内含数组项
let newArr = []

2.添加元素数据结构

  • push() 把元素添加到数组的末尾。
  • unshift() 把元素添加到数组的头部。
  • splice() 向/从数组中添加/删除项目,而后返回。
  • 利用length 使用下标 进行操做。

clipboard.png

3.删除元素函数

  • delete操做符、下标 不改变数组长度只会把下标记值置为undefined。
  • splice() 向/从数组中添加/删除项目,而后返回 同上添加。

clipboard.png

4.其它经常使用方法spa

  • concat() 链接多个数组而且将结果返回为一个新的数组。
  • forEach() 对当前数组中的每一项运行给定的函数。
  • indexOf() 返回第一个与给定参数相等结果的数组元素的索引,若是没有找到则返回结果是 -1。
  • map() 对当前数组中的每一项运行给定的函数,返回每次函数调用的结果组成的数组。
  • every() 对当前数组中的每一项运行给定的函数,若是函数每一项返回的都是ture,则返回true。
  • filter() 对当前数组中的每一项运行给定的函数,返回函数结果为true的项组成的数组。
  • join() 将数组中全部的元素拼接成一个新的字符串。
  • lastIndexOf() 返回在数组中搜索到的与给定参数相等的元素结果里的索引最大的值。
  • reverse() 颠倒数组中元素的顺序,原先第一个执行后会成为最后一个。
let newArr = [1, 'a', 2, 'b'];
console.log(newArr.join(';'));
newArr.forEach(function(item, index) {
  console.log('item: '+ item + ' ' + 'index: ' + index);
})
console.log(newArr.indexOf('a'));
let strArr = newArr.filter(function(item) {
  if(typeof(item) === 'string') {
    return true;
  }
})
console.log(strArr);
console.log(strArr.reverse());

clipboard.png

使用字符串的方法str.split() 能够返回字符串转化为数组的结果。设计

结尾

js数组也能够表现的像栈和队列同样的数据结构,实现相应的行为,感兴趣的能够去研究下。code

栈和队列简介
    栈是一种听从后进先出 (LIFO) 原则的有序集合。新添加的或待删除的元素都保存在栈的 末尾,称做栈顶,另外一端就叫栈底。在栈里,新元素都靠近栈顶,旧元素都接近栈底。
队列是遵循FIFO (First In First Out,先进先出,也称为先来先服务) 原则的一组有序的项。 队列在尾部添加新元素,并从顶部移除元素。最新添加的元素必须排在队列的末尾。对象

参考资料:
    js高级程序设计 js数据结构与算法索引

相关文章
相关标签/搜索