珠峰培训

珠峰培训之js中的数组及数组中的方法详解

作者:fandonglai

2016-07-17 23:34:12

212

数组和数组的常用方法

1 创建数组的两种方式

  1. 字面量创建方式:
var arr = [1,2,3,4];
  1. 实例创建方式:
var arr = new Array();  
  1. 数组也是对象数据类型,由属性名和属性值组成
  2. arr.length 可以获取数组的长度

2 数组的增加

  1. arr.push(16); 向数组末尾添加元素,返回值为新数组的长度;原有数组改变了
  2. arr.unshift(17); 向数组的开头添加元素,返回值为新数组的长度;原有数组改变了
var arr = [14,15];
arr.push(16);
console.log(arr);
arr.unshift(17);
console.log(arr);
  1. arr.splice(0,0,x); 相当于arr.unshift(x),在数组开头添加元素
var arr = [1,2,3,4];
console.log(arr.splice(0,0,5,6)); //[]
console.log(arr); // 5,6,1,2,3,4
  1. arr.splice(n,0,x); 向数组中某个位置添加元素,从索引n开始,删除0个内容,并在索引n之前添加内容x;返回的是一个空数组;原有数组改变
var arr = [1,2,3,4];
console.log(arr(1,0,5)); //[]
console.log(arr); //[1,5,2,3,4]
  1. arr.splice(arr.length,0,x); 相当于arr.push(x),在数组末尾添加元素
var arr = [1,2,3,4];
console.log(arr.splice(arr.length,0,5)); //[]
console.log(arr); //1,2,3,4,5

3 数组的删除

  1. arr.splice(n,m,x); 把原数组中的某些项进行替换,从索引n开始删除m个元素,用x替换原来的,并返回删除的内容
var arr = [1,2,3,4];
console.log(arr.splice(1,2,5,6)); //2,3
console.log(arr); //1,5,6,4
  1. arr.splice(n,m); 从索引n开始(包含n),删除m个元素,并将删除的内容作为数组返回
var arr = [1,2,3,4];
console.log(arr.splice(1,2)); //2,3
console.log(arr); //1,4
  1. arr.splice(arr.length-1,1); 删除数组的最后一项
var arr = [1,2,3,4];
console.log(arr.splice(arr.length-1,1));
  1. arr.pop(); 删除数组最后一项,并将删除的元素作为返回值,原有数组长度减1
var arr = [1,2,3,4];
console.log(arr.pop()); //4
console.log(arr); //1,2,3
  1. arr.shift(); 删除数组第一项,并将删除的元素作为返回值,原有数组长度减1
var arr = [1,2,3,4];
console.log(arr.shift()); //1
console.log(arr); //2,3,4
  1. 可以总结出:数组删除元素的方法都会将删除元素返回,数组增加元素的方法都会返回空数组

4 数组的查询

  1. arr.slice(n,m); 从索引n开始(包含n),找到索引m处(不含m),将找到的内容作为一个新的数组返回,原有数组不变
var arr = [1,2,3,4];
console.log(arr.slice(1,2)); //2
console.log(arr); //1,2,3,4
  1. arr.slice(n); 从索引n开始(包含n),找到数组末尾
var arr = [1,2,3,4];
console.log(arr.slice(1)); //2,3,4
console.log(arr); //1,2,3,4
  1. arr.slice(0)或arr.slice() 将原有数组复制一份,属于数组的克隆
var arr = [1,2,3,4];
console.log(arr.slice()); //1,2,3,4
console.log(arr); //1,2,3,4
  1. splice和slice的区别在于对原数组的改变

5 数组的复制

虽然slice()也能复制一个数组出来,但是这个方法只是查询出了所有元素,真正的复制方法为concat()

  1. arr.concat() 实现数组的克隆,原来的数组不变,相当于slice(0)
var arr = [1,2,3,4];
var arr2 = arr.concat();
console.log(arr2);
  1. arr.concat(arr2)本意用于数组的拼接,将数组arr和arr2拼接成一个数组;返回拼接后的数组
var arr = [1,2];
var arr2 = [3,4];
console.log(arr.concat(arr2)); //1,2,3,4
console.log(arr2.concat(arr)); //3,4,1,2

6 数组的其他方法

  1. 转化为字符串toString(),把数组中每一项用“,”隔开,连接为字符串,原有数组不变
    空数组转化为空字符串
var arr = [1,2,3,4];
console.log(arr.toString); //"1,2,3,4"
console.log([] == ""); //true
  1. join(分隔符),把原有数组按照指定分隔符连接成字符串
var arr = [1,2,3,4];
var str = arr.join("+")
console.log(str); //"1+2+3+4"
console.log(eval(str)); //10
  1. 数组的倒序reverse(),将数组倒过来排列,原有数组改变
var arr = [1,2,3,4];
arr.reverse();
console.log(arr);
  1. 数组的排序sort(),将数组由大到小或由小到大排列,原有数组改变;但是直接用sort排序只能处理10以内的排序
var arr = [4,1,3,2];
arr.sort();
console.log(arr); //1,2,3,4

当需要排序10以上的数组时需要传递参数sort(function(a,b){return a-b;}),其中a代表每次循环的当前项,b代表后面的项

var arr = [11,16,15,17,12,14,13];
arr.sort(function(a,b){return a-b;});
console.log(arr);

7 数组常用但不兼容的方法

  1. indexOf(); 判断数组是否包含某一项
var arr = [1,2,3,4,5];
console.log(arr.indexOf(3)); //返回元素3所在的索引位置:2
console.log(arr.indexOf(3,1)); //从索引1的位置处开始查找元素3的所在位置:2
//若在指定位置后没找到的话则返回-1
  1. forEach(); 循环数组中每一项,在这个循环中不能使用break和continue,若跳出循环则需要return
var arr = [1,2,3,4];
arr.forEach(function(e){
if(e<=3){
alert(e)
}else{
return ;
}
});
  1. map(); 循环每一项,操作参数