第10节 JavaScript数组的一些常用方法

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

 创建数组的方式有2种方法:
  使用Array构造函数创建一个数组

var arr1 = new Array(1,3,5,7,9);

  使用数组字面量表示法创建一个数组

var arr2 = [1,3,5,7,9];

  在读取设置数组的值时,要使用方括号并提供相应值得基于0的数字索引

//输出数组的第1项
console.log(arr2[0]);   //输出 1

  数组的项数保存在其length属性中,利用length属性可以方便地在数组某位添加新项

//输出数组的长度
console.log(arr2.length);   //输出 5

//使用length为数组末尾添加1个新的项
arr2[arr2.length] = 11;
console.log(arr2);  //输出 [1,3,5,7,9,11]

1、检测数组
  ECMAScript5新增了Array.isArray()方法,这个的目的最终确定某个值到底是不是数组。

//检测数组
var colors = ['red','green','orange'];
console.log(Array.isArray(colors)); //输出 true

2、转换方法
  join(),接受一个参数用作分隔符,将数组每一项分隔组成新的字符串。

//join():使用一个分隔符将数组分隔开来组成新的字符串返回出来
var colors = ['red','green','orange'];
var str = colors.join("|");
console.log(str);   //输出 red|green|orange

3、栈方法
  栈是一种LIFO(后进先出)的数据结构,最新添加的项最早被移除,而栈中项的插入和移除,只发生在一个位置——栈的顶部。
  push():可以接受任意个参数,逐个添加到数组的末尾,并返回修改后数组的长度。
  pop():从数组的末尾移除最后一项,返回移除的一项。

//栈方法
var arr = [1,3,5,7,9];

//push():末尾添加项,返回修改后数组的长度
console.log(arr.push(11,13,15,17,19,20));//输出 11
console.log(arr);   //输出 [1,3,5,7,9,11,13,15,17,19,20]

//pop():移除末尾的最后一项,并返回移除的项
console.log(arr.pop()); //输出 20
console.log(arr);   //输出 [1,3,5,7,9,11,13,15,17,19]

4、队列方法
  队列数据结构的访问规则是FIFO(先进先出),在末尾添加项,从列表首移除项。
  shift():移除数据的第一项,并返回移除的这个结果。
  unshift():在数组头部新添加元素,返回修改后数组的长度。

    //队列方法
    var arr = [1,2,3,4,5];

    //shift():移除数组首部的一项,并返回移除的项
    console.log(arr.shift());   //输出 1
    console.log(arr);   //输出 [2,3,4,5]

    //unshift():在数组首部添加元素,返回修改后数组的长度
    console.log(arr.unshift(0,1));  //输出 6
    console.log(arr);   //输出 [0,1,2,3,4,5]

5、重排序方法
  reverse():反转数组的顺序。
  sort():方法会调用每个数组项的toString()方法,然后比较得到的字符串,因此sort()可以接收一个比较函数。
  传入的比较函数接受两个参数,如果第一个参数应该位于第二个之前则返回一个附属,如果两个参数相等返回0。
  reverse()和sort()方法的返回值是经过排序之后的数组,会改变原来数组。

//reverse():
var arr = [1,2,3,4,5];
arr.reverse();
console.log(arr);//输出 [5,4,3,2,1]

//sort():
var arr = [1,2,3,4,5,10,15];

//会调用每一项的toString(),所以会按照字符串的比较方法
arr.sort();
console.log(arr);//输出 [1,10,15,2,3,4,5]

//如果单纯比较数字,可以传入一个简单函数
//升序
arr.sort(function(a,b){return a-b});
console.log(arr);//输出 [1,2,3,4,5,10,15]

//降序
arr.sort(function(a,b){return b-a});
console.log(arr);//输出 [15,10,5,4,3,2,1]

6、操作方法
  concat():连接数组,创建一个新的数组。

//concat()
var colors1 = ['red','green','yellow'];
var colors2 =colors1.concat('blue','orange');
console.log(colors2);//输出 [red,green,yellow,blue,orange]

  slice():截取数组的一部分,返回一个子串不会影响原始数组。接收一个或两个参数,项的起始位置和结束位置不包括结束位置的项。

//slice()
var arr = [1,2,3,4,5,10,15];
console.log(arr.slice(0,5));    //输出 [1,2,3,4,5]

  splice():最强大的数组方法,多种用法。
  参数说明:参数1起始位置,参数2删除项的数量,参数3增加的项

用法功能参数数量参数说明
删除可以删除任意的项2个参数删除的第一项的位置,和要删除的项数
插入可以向指定位置插入任意数量的项3个参数起始位置,0,插入的项
替换可以向指定位置插入任意数量的项,且同时删除任意数量的项3个参数起始位置,要删除的项数和要插入的任意数量的项
//splice()
var arr = [1,2,3,4,5,10,15];

//删除中间3个元素
console.log(arr.splice(2,3));   //输出[3,4,5]
console.log(arr);               //输出[1,2,10,15]

//插入3项新的元素
console.log(arr.splice(2,0,6,6,6)); //输出 []
console.log(arr);               //输出 [1, 2, 6, 6, 6, 10, 15]

//替换中间3个元素
console.log(arr.splice(2,3,7,7,7)); //输出 [6,6,6]
console.log(arr);               //输出 [1, 2, 7, 7, 7, 10, 15]

7、位置方法
  indexOf():接收两个参数,查找的项,查找的起点位置的索引。
  lastindeOf():从数组的末尾开始向前找。

//indexOf()
var arr = [1,3,4,5,6,7,9,3,6];

//从0开始找3的索引位置
console.log(arr.indexOf(3));    //输出 1

//从索引5的位置开始找3的索引位置
console.log(arr.indexOf(3,5));  //输出 7

学习总结

  这一节的学习内容有点多,只能慢慢消化,不能急于求成。相信掌握了数组的这些函数,面对数组的操作也可以从容一战啦。其实回顾其他语言,很多数组的函数都大同小异。所以要理解这些函数的本质,在学习更多的知识变通起来也不会困难。知识只会积累的越来越多,方法和思想才是重要的。
  这周的学习有点懈怠,给自己加油,勿忘初心!


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值