javascript系列之数组
数组方法
Array.push():在数组末尾增加一个或多个元素
Array.pop():在数组末尾删除一个元素
- Array.unshift():在数组头部增加一个或多个元素。<参数一次性插入>
Array.shift():在数组头部删除一个元素
Array.join():将数组所有元素都转化为字符串并连接在一起。[1,2,3].join(‘-‘)=>1-2-3
String.split():join()的逆运算,将字符串分割成若干块来创建一个数组。”1,2,3”.split(‘,’)=>[ ‘1’,’2’,’3’]
Array.reverse():将数组中的元素颠倒顺序,返回逆序数组。[1,2,3].reverse()=>[3,2,1]
Array.sort():排序,默认按字母表排序。
var arr=[33,4,1111,222];
arr.sort(function(a,b){return a-b;}); //升序排列 =>[4,33,222,1111]
Array.concat:连接两个数组,不改变原始数组。[1,2,3].concat([4,5,6])=>[1,2,3,4,5,6]
Array.slice():截取数组片段,两个参数,分别是数组的开始和结束位置。
var arr = [1,2,3,4,5]; arr.slice(3) // =>[4,5] arr.slice(0,3) // =>[1,2,3]
Array.splice():在数组中插入或删除元素的通用方法。会改变调用的数组。
var arr = [1,2,3,4,5]; //删除 arr.splice(2); //返回[3,4,5]; arr变为[1,2] arr.splice(1,1); //返回[2]; arr变为[1] //插入 var arr = [1,2,3,4,5]; arr.splice(2,0,'a','b'); //返回[]; a变为[1,2,'a','b',3,4,5] arr.splice(2,2,[1,2],3); //返回['a''b']; a变为[1,2,[1,2,],3,3,4,5]
Array.toString()和Array.toLocaleString():将每个元素转化为字符串,输出用逗号分隔得字符串列表,等同join();
- 一般使用toString
- 当数字是四位数及以上时,有区别,推荐使用localstring
当目标是标准时间格式时,两种方法是有区别的,推荐使用localstring。
数组遍历
for:命令式风格
for(var i=0,len=arr.length;i<len;i++) //推荐写法 if(!arr[i]) continue ; //跳过null,undefined,false,0,'',和不存在元素 if(arr[i]===undefined) continue; //跳过undefined和不存在元素 if(!(i in arr)) continue; //跳过不存在元素
forEach():函数式风格,三个参数;数组元素、元素索引、数组本身。
- 无法在所有元素都传递给调用的函数之前终止遍历
var data = [1,2,3]; var sum = 0; data.forEach(function(x){sum+=x}) //sum=>6 data.forEach(function(v,i,a){ a[i] = v + 1;}); //data=>[2,3,4]
map():调用方式和forEach一样,但传递给map()的函数应该有返回值。
arr.map(function(x){return x});
- filter():过滤器,返回元素是调用数组的一个子集,,与正则搭配更强大
arr.filter(function(x){return x !== undefined && x!=null; });
every()和some():调用方式和filter一样,返回true或false,
reduce和reduceRigth():使用指定的函数将数组元素进行组合,生成单个值。
- 两个参数:第一个是执行化简操作的函数,第二个(可选)是传递给函数的初始值
//数值计算(数组)
var arr=[1,2,3,4,5]
var sum = arr.reduce(function(x,y){ return x+y},0) //数组求和
var product = arr.reduce(function(x,y){ return xx*y},1); //数组求积
var max = arr.reduce(function(x,y){ return (x>y)?x:y;}); //求最大值
//对象
var objects = [{x:1},{y:2},{z:3}];
var merged = objects.reduce(union); //union是有两个参数的函数
indexOf()和lastIndexOf():返回该值在数组中的索引,没有返回-1;
Array.isArray([]):检测是否为数组
- 类数组
可以通过Function.call方法在对象和字符串调用部分数组方法
Array.prototype.join.call(string,' ')
Array.prototype.slice.call(string,0)
以上知识点来自《JavaScript权威指南》第六版第七章