java script 遍历数组_Java Script 数组

谈及数组,很多语言当中都有数组这个概念。今天我讲讲JS(Java Script)当中数组的一些用法。

数组对象的作用是:使用单独的变量名来存储一系列的值。什么是数组?数组对象是使用单独的变量名来存储一系列的值。假如我们要存储一个值,可以用 var  num = a,假如我们要存储几个,十几个,甚至几百个呢?最好就使用到数组。数组可以用一个变量名来存储所有的值,并且可以用变量名访问数组中任何一个值,数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。

数组的创建:

一、用构造函数的方式定义:

var arr = new Array();  //定义了一个空数组

var arr = new Array(5);  // 定义了一个数组,里面有五个元素,这五个变量没有值;

var arr = new Array("a",66,true,null);  //定义了一个数组,里面有4个元素,值已经赋好了。

二、字面量的方式定义:

var arr = [];  //等价于:var arr = new Array();

var arr = ["a",66,true,null];  //等价于: var arr = new Array("a",66,true,null);

数组的访问:

通过指定数组名以及索引号码,来访数组中任意一个的元素。

arr[0]:代表的就是数组arr中第一个元素。

表达形式为:arr[下标]。下标是从0开始的,所以访问第一个就是0,访问第二个下标就是1以此类推;最大的下标就是length-1,其中length为数组的长度,也就是数组中元素的个数。其中下标可以为数字,也可以为表达式,如 arr[i+1] 、 arr[2*i] 等等。

数组的常用方法:

push():添加元素:在数组的末尾增加一个元素。返回了一个新的数组

如 arr.push("a"),在arr数组最后面添加一个新的元素a,然后成了一个新的数组,原数组发生了改变。

若arr = [1,2,3,4,5],arr.push(6) 之后,console.log(arr) (输出arr),值为[1,2,3,4,5,6]。

pop():删除元素:删除数组里最后一个元素,返回值就是被删除的元素,不接收参数

如 arr.pop() ,删除arr数组中最后一个元素,原数组(arr)会发生改变,新的数组为删除最后一个元素的数组

即若arr = [1,2,3,4,5],arr.pop() 之后,console.log(arr) (输出arr),值为[1,2,3,4]。

unshift():添加元素: 在数组的开始添加,返回数组中元素的个数向数组的头部增加元素,括号中有多少就添加多少,原数组会发生改变。

即若arr = [1,2,3,4,5],arr.unshift() 之后,console.log(arr) ,值为[0,1,2,3,4,5]。

shift():删除元素:删除数组中第一个元素。返回值为删除的元素,原数组会发生改变

即若arr = [1,2,3,4,5],arr.shift() 之后,console.log(arr) ,值为[2,3,4,5]。

splice():给数组既可以添加元素,也可以删除元素,可以在在指定下标删除

括号内第一个值:选择一个下标进行改变;第二个值:在该下标删除的元素个数,可以为0,为0就是直接插入元素;第三个以后的值都是要插入的元素。

arr.splice(2,0,"a");//在下标2的位置插入了a

arr.splice(2,1,"a");//把下标为2的元素删除掉,在下标2的位置插入了a,相当于替换

arr.splice(2,3,"a");//删除元素:从下标2开始删除3个,插入元素:在下标2的位置插入了 a

arr.splice(2,3,"a","b",);//删除元素:从下标2开始删除3个,插入元素:在下标2的位置插入了a,b

concat():拼接数组,把两个数组拼接起来,也可以拼接元素

可以给数组的末尾增加元素,但是concat并不会改变原始的数组,concat的返回值是添加元素后的结果,一个新的数组。

如arr.concat(arr1),将 arr 数组与 arr1 数组进行拼接,并不会改变 arr 和 arr1 本来的值。

reverse():将数组的元素进行翻转(颠倒)会改变初始数组

如 arr = [1,2,3,4,5], arr.reverse() ,console.log(arr)  ,结果为[5,4,3,2,1]。

slice():从数组里截取出一部分元素(根据起始下标和结束下标)不会改变初始数组,返回值为截取下来的元素

如 arr = [1,2,3,4,5], arr.slice(2,4) ,console.log(arr)  ,结果为[1,2,3,4,5]。

var arr1 = arr.slice(2,4) ,console.log(arr1)  ,结果为[3,4]。不会包括下标4,即 arr.slice(2,4)只截取下标2,3;左闭右开。

sort():进行排序,只能排序字符串,不能排序数字。默认为从小到大排序,会改变原始数组,返回值为排序好的数组

如 arr = [1,3,5,4,2], arr.sort() ,console.log(arr)  ,结果为[1,2,3,4,5]。

如果要进行从大到小排序,

arr = [1,3,5,4,2], arr.sort(function(a,b) { return (b-a) } ) ,console.log(arr)  ,结果为[5,4,3,2,1]。

join():把数组中的所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的。不会改变原始数组,返回值为一串字符串

如 arr = [1,2,3,4,5], arr.join( " - " ) ,console.log(arr)  ,结果为[1,2,3,4,5]。

var arr1 = arr.join( " - " ),console.log(arr1)  ,结果为 1-2-3-4-5。

console.log( typeof( arr1 ) ),结果为 string(字符串类型)。typeof()检测括号内是什么数据。

indexOf():在数组里查找某个元素的位置(第一次出现的位置)下标。

indexOf(元素,num);num为查找起始位置(下标),默认为0。

如 var arr=[1,2,3,3,2,1,1,2,3] ,var result = arr.indexOf( 2,0 ),  //从下标0开始找2第一次出现的位置,console.log(result) ,结果显然为1(第一次出现的那个2在下标1处)

查找没有时返回值为-1。

lastIndexOf():在数组里查找某个元素的位置(最后一次出现的位置)下标,但是他是倒过来查找的。

indexOf(元素,num);num为查找起始位置(下标),默认为0。

如 var arr=[1,2,3,3,2,1,1,2,3] ,var result = arr.lastIndexOf( 2,5 ),  //从下标5开始找2最后一次出现的位置,console.log(result) ,结果为4(最后一次出现的那个2在下标4处)

查找没有时返回值为-1。

数组的遍历:

for最简单循环遍历的方法,频率最高的一种。

for( var i = 0;i

for...in...用的人也很多但是效率很低

for( var key in arr)  key为数组索引

在循环数组时,for in 循环给循环变量赋值为 字符串类型,for in循环必须把所有的元素要循环一遍,

普通的for循环给循环变量赋值为 数字类型,普通的for的循环,可以控制循环哪些元素。更加灵活

循环对象时,普通for循环,没法直接循环对象。

forEach():用于调用数组的每个元素,并将元素传递给回调函数。对于空数组是不会执行回调函数的。

arr.forEach(function( item,index,arr){})  item:数组的每个元素;  index:数组的下标;  arr:数组本身;

数组自带的方法,性能比普通循环略低。

map():映射

var newArr=arr.map(function(item,index){})

功能:把原始数组的元素进行一些处理,把处理结果放在一个新的数组里(映射)

参数:回调函数(对原始数组每个元素的处理)

返回值:新的数组。  返回的新数组长度与旧数组长度是一样的。

使用比较广泛,性能不如forEach。

filter():遍历数组,过滤出符合条件的元素并返回一个新的数组

var newArr=arr.filter(function(item,index){})

功能:在原始数组里进行元素的筛选,结果应该比原始数组的内容少了

forEach,map,filter的区别:

相同点:

参数都是回调函数,回调函数里的参数也是也一样的,在这三个函数内部都会遍历原始数组.

不同点:

forEach:  把原始数组的元素内容进行修改。

map:  映射,产生一个新的数组,新的数组是原始数组进行运算后的结果,原始数组不变。

filter:  过滤,把原始数组中每个元素满足条件的元素跳出来,放在一个新的数组里。

以上就是我今天要分享的有关JS数组的一些用法,新人小白一枚,有错误的地方还希望指出改正,最后希望大家能够学的越来越好!

splice()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值