杂谈

    数组是最简单的内存数据结构,也是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.其它常用方法

  • 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数组也可以表现的像栈和队列一样的数据结构,实现相应的行为,感兴趣的可以去研究下。

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

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


清水
26 声望2 粉丝

清水既心、