珠峰培训之js中的数组及数组中的方法详解
2016-07-17 23:34:12
212
数组和数组的常用方法
1 创建数组的两种方式
- 字面量创建方式:
var arr = [1,2,3,4];
- 实例创建方式:
var arr = new Array();
- 数组也是对象数据类型,由属性名和属性值组成
- arr.length 可以获取数组的长度
2 数组的增加
- arr.push(16); 向数组末尾添加元素,返回值为新数组的长度;原有数组改变了
- arr.unshift(17); 向数组的开头添加元素,返回值为新数组的长度;原有数组改变了
var arr = [14,15];
arr.push(16);
console.log(arr);
arr.unshift(17);
console.log(arr);
- 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
- 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]
- 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 数组的删除
- 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
- 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
- arr.splice(arr.length-1,1); 删除数组的最后一项
var arr = [1,2,3,4];
console.log(arr.splice(arr.length-1,1));
- arr.pop(); 删除数组最后一项,并将删除的元素作为返回值,原有数组长度减1
var arr = [1,2,3,4];
console.log(arr.pop()); //4
console.log(arr); //1,2,3
- arr.shift(); 删除数组第一项,并将删除的元素作为返回值,原有数组长度减1
var arr = [1,2,3,4];
console.log(arr.shift()); //1
console.log(arr); //2,3,4
- 可以总结出:数组删除元素的方法都会将删除元素返回,数组增加元素的方法都会返回空数组
4 数组的查询
- 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
- 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
- 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
- splice和slice的区别在于对原数组的改变
5 数组的复制
虽然slice()也能复制一个数组出来,但是这个方法只是查询出了所有元素,真正的复制方法为concat()
- arr.concat() 实现数组的克隆,原来的数组不变,相当于slice(0)
var arr = [1,2,3,4];
var arr2 = arr.concat();
console.log(arr2);
- 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 数组的其他方法
- 转化为字符串toString(),把数组中每一项用“,”隔开,连接为字符串,原有数组不变
空数组转化为空字符串
var arr = [1,2,3,4];
console.log(arr.toString); //"1,2,3,4"
console.log([] == ""); //true
- join(分隔符),把原有数组按照指定分隔符连接成字符串
var arr = [1,2,3,4];
var str = arr.join("+")
console.log(str); //"1+2+3+4"
console.log(eval(str)); //10
- 数组的倒序reverse(),将数组倒过来排列,原有数组改变
var arr = [1,2,3,4];
arr.reverse();
console.log(arr);
- 数组的排序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 数组常用但不兼容的方法
- 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
- forEach(); 循环数组中每一项,在这个循环中不能使用break和continue,若跳出循环则需要return
var arr = [1,2,3,4];
arr.forEach(function(e){
if(e<=3){
alert(e)
}else{
return ;
}
});
- map(); 循环每一项,操作参数