您的位置:首页 > 其它

Array

2020-02-03 04:22 148 查看

js中数组的每一项可以保存任何类型的数据,而且数组的大小是可以动态调整的,可以随数据的添加自动增长以容纳新数据。


创建数组有两种方法var arr1 = newArray(); //创建一个空数组var arr2 = newArray(20); // 创建一个包含20项的数组

var arr3 = newArray("lily","lucy","Tom");  // 创建一个包含3个字符串的数组

var arr4 = []; //创建一个空数组var arr5 = [20]; // 创建一个包含1项的数组var arr6 =["lily","lucy","Tom"];  // 创建一个包含3个字符串的数组


使用Array构造函数时也可以省略new操作符 在读取和设置数组的值时,要使用方括号并提供相应值的基于 0的数字索引方括号中的索引表示要访问的值。如果索引小于数组中的项数,则返回对应项的值.某个值的索引超过了数组现有项数,数组就会自动增加到该索引值加 1 的长度

JavaScript中数组的length属性是可以修改的。通过设置这个属性,可以从数组的末尾移除项或向数组中添加新项

var arr =["lily","lucy","Tom"];  // 创建一个包含3个字符串的数组arr[arr.length] ="sean"; //在下标为3处(也就是数组尾部)添加一项"sean"arr.length = arr.length-1;//将数组的最后一项删除

 instanceof操作符的问题在于,它假定只有一个全局执行环境。 可以用Array.isArray()方法确定某个值到底是不是数组if (Array.isArray(value)){     //对数组执行某些操作 

}


栈方法栈是一种 LIFO(Last-In-First-Out,后进先出)的数据结构,也就是 新添加的项 早被移除push()方法可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。而pop()方法则从数组末尾移除 后一项,减少数组的length值,然后返回移除的项。

队列方法FIFO(First-In-First-Out,先进先出)。队列在列表的末端添加项,从列表的前端移除项。shift()它能够移除数组中的第一个项并返回该项,同时将数组长度减1结合使用shift()和push()方法,可以像使用队列一样使用数组。

unshift()与shift()的用途相反:它能在数组前端添加任意个项并返回新数组的长度。因此,同时使用unshift()pop()方法,可以从相反的方向来模拟队列,即在数组的前端添加项,从数组末端移除项


重排序方法

reverse()方法会反转数组项的顺序

var values = [1, 2, 3, 4,5];values.reverse(); alert(values); //5,4,3,2,1


sort()方法会调用每个数组项的 toString()转型方法,然后比较得到的字符串,以确定如何排序按升序排列数组项sort()方法可以接收一个比较函数作为参数,以便我们指定哪个值位于哪个值的前面。

Function compare(value1,value2){       If (value1<value2){              return -1;       }else if (value1>value2){              return 1;       }else{       return 0;}}arr2 =[13,24,51,3];

console.log(arr2.sort(compare)); //[3,13,24,51]

如果需要通过比较函数产生降序排序的结果,只要交换比较函数返回的值即可



concat()方法可以基于当前数组中的所有项创建一个新数组

如果传递给concat()方法的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中。如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾.


slice()它能够基于当前数组中的一或多个项创建一个新数组。slice()方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项— —但不包括结束位置的项。slice()方法不会影响原始数组。如果slice()方法的参数中有一个负数,则用数组长度加上该数来确定相应的位置。如果结束位置小于起始位置,则返回空数组。


splice()会返回一个数组,该数组中包含从原始数组中删除的项删除:需指定 2 个参数:要删除的第一项的位置和要删除的项数插入:需提供 3 个参数:起始位置、0(要删除的项数)和要插入的项替换:需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等


indexOf()lastIndexOf()两个参数:要查找的项和(可选的)表示查找起点位置的索引。indexOf()方法从数组的开头(位置 0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。要求查找的项必须严格相等。会返回要查找的项在数组中的位置。


reduce()和 reduceRight()这两个方法都会实现迭代数组的所有项,然后构建一个最终返回的值。reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项。这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传给 reduce()和 reduceRight()的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。


toLocaleString()、toString()和valueOf()方法调用数组的toString()方法和valueOf()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。toLocaleString()与前两个方法唯一的不同之处在于,这一次为了取得每一项的值,调用的是每一项的toLocale- String()方法,而不是toString()方法。在默认情况下都会以逗号分隔的字符串的形式返回数组项。

而使用join()方法接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。

 迭代方法

ECMAScript 5 为数组定义了 5 个迭代方法。
每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响 this 的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。

1.forEach():对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值。参数都是function类型,默认有传参,参数分别为:遍历的数组内容;第对应的数组索引,数组本身。

2.some():判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。

3.every():判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回true。

4.filter():“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。

5.map():指“映射”,对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
xiehuiru 发布了17 篇原创文章 · 获赞 1 · 访问量 683 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: