数组方法总结
数组:存储一组或者一系列相关数据的容器;
动态赋值方法: 增、删、改、截、拼、复、排、转 1.作用 2.返回值 3.是否会影响原数组
增:
unshift("新增的元素")
1.在数组的首部增加元素
2.返回新增后数组的长度
3.是
用法
var arr = [3,4,5,6,7];
console.log(arr.unshift(8));
console.log(arr);
var arr = [3,4,5,6,7];
console.log(arr.unshift([1,2,3]));
console.log(arr); //[[1,2,3],3,4,5,6,7]
push("新增的元素")
1.在数组的尾部增加元素
2.返回新增后数组的长度
3.是
用法:
var arr = [3,4,5,6,7];
console.log(arr.push([1,2,3]));
console.log(arr); //[[1,2,3],3,4,5,6,7]
删:
shift()
1.删除数组首部的元素(一次只能删除一个元素) 思考:如何删除数组所有元素?
2.返回被删除的元素
3.是
用法:
var arr = [3,4,5,6,7];
console.log(arr.shift());
console.log(arr);
pop()
1.删除数组尾部的元素(一次只能删除一个元素)
2.返回被删除的元素
3.是
改:
splice(下标位置,删除的长度,增加元素,……)
1.在数组指定的位置,删除、新增、修改。
2.返回是被删除的元素列表
3.是
用法:在下标为2后面添加3这个数字
var arr=[10,3,32,43,434,87];
arr.splice(2,0,3);
console.log(arr);
结果:10,3,32,3,43,434,87
删除下标为2替换为3这个数字
arr.splice(2,1,3);
结果:10,3,3,43,434,87
删除index2开始的后3个,并添加3
arr.splice(2,3,3);
表示:删数组的第2个数字开始的后三个数字,并且用3去替换;(从0开始计算)
结果:(3) [10,3,87]
截:
slice[start,end) : 前包后不包
1.截取指定范围的元素
2.返回被截取到的元素列表
3.否
用法:
var arr = [3,4,5,6,7];
console.log(arr.slice(1,3)); //[4,5]
console.log(arr)
var arr = [3,4,5,6,7];
console.log(arr.slice(1,-2)); //[4,5]
console.log(arr);
var arr = [3,4,5,6,7];
console.log(arr.slice(-4,-2)); //[4,5]
console.log(arr);
var arr = [3,4,5,6,7];
console.log(arr.slice(4,2)); //空数组
console.log(arr);
substring:参数不可以是负数
var arr=[10,5,40,25,1000,1];
console.log(arr.slice(2));
结果:40,25,1000,1 //取得是下标数字为2以及之后的数字
var arr=[10,5,40,25,1000,1];
console.log(arr.slice(2,4));、、提取[2-4)之间的字符,不包前后
结果:40,25 //取得是2,3的值
拼 :
concat("拼接的内容") 注:如果拼接的内容是一个数组,则将该数组所有的元素提取出来再拼接
1.在指定的数组末尾拼接新的元素
2.返回拼接后的新数组
3.否
用法:
var a=[2,4,5];
var b=[34,55];
var c=["beijing"];
console.log(a.concat(b)); //(5) [2, 4, 5, 34, 55]
console.log(a.concat(c)); //(6) [2, 4, 5,"beijing"]
console.log(a); //[2,4,5]
复 :面试题,至少写出三种复制数组的方法?
1. slice(0)
2. arr.concat()
3. var arr = [3,4,5,6,7];
var list = [];
for(var i = 0;i < arr.length;i ++){
list[i] = arr[i];
}
arr[0] = 9;
console.log(arr);
console.log(list);
转:
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。转为字符串
1.将数组转为指定连接符的字符串。
2.返回转换后的字符串。
3.否
用法:
var arr = [3,5,4,6,7,100];
console.log(arr.join(""));//常用 35467100
console.log(arr); //[3,5,4,6,7,100];
var a=[2,4,5];
console.log(a.join())
//结果:2,4,5;
console.log(a.join("."))
//结果:2.4.5
toString()
转换后字符串
否
1.转化为字符串
var arr=[2,5,3,1,5];
console.log(arr.toString()); // 25315 字符串
console.log(arr) //[2,5,3,1,5]; 不改变
2.十进制转为n进制
var a=123;
console.log(a.toString(2))
排:
reserve()
1.将数组元素逆序存放
2.返回逆序后的数组
3.是
用法:
var arr=[2,4,5];
console.log(arr.reverse()); //[5,4,2]
console.log(arr) //[5,4,2]
sort() sort(function(a,b){return a-b;})
1.排序
2.返回排序后的数组
3.是
//函数作为参数出现,称为回调函数,a-b从小到大;b-a从大到小
字符串时按照字母顺序进行排序,不是字符串时要构造函数
用法:
var arr=[10,5,40,25,1000,1];
console.log(arr.sort(function(a,b){return a-b;}))
console.log(arr) //改变原数组
结果:(6) [1, 5, 10, 25, 40, 1000];
(6) [1, 5, 10, 25, 40, 1000]
拓展:
查找数组中最小值
var minArray=Math.min.apply(null,Array);
ES5新增的数组方法
indexOf(元素,下标位置):查找,并返回第一个值出现的下标。若没有,返回-1
value表示要查找的数字,start表示从当前数组的第几个值开始查找,并返回value首次出现的下标
例1: var arr=[1,2,3,8,2,6,7]
console.log(arr.indexOf(2,1))
结果:1
分析:要查找2这个数字,所以value为2;从数组的0位数开始查询,数组中第一个出现的2下标为1,所以打印结果为1
例2: var str="Hello world!"
console.log(str.indexOf(world))
打印结果:6
map:有返回值,参数是匿名函数
var arr=[10,2,3,5,2]
var list = arr.map(function(value,index){
retrun value+1; //11,3,4,6,3
})
console.log(list)
forEach:遍历数组;
参数:匿名函数;
数组有多少项,就调用多少次函数
返回值:undefined
用法:
var arr=[10,2,3,5,2]
arr.forEach(function(value,index,arr){//回调函数 value表示元素值,index表示元素下标
console.log(value+":"+index+":"+arr);
})
结果: 10 : 0 :[10,2,3,5,2]
2 : 1 : [10,2,3,5,2]
3 : 2 : [10,2,3,5,2]
5 : 3 : [10,2,3,5,2]
2 : 4 : [10,2,3,5,2]
filter:过滤器,筛选
用法:
var arr=[1,2,3,4,5,6,7];
var newArray=arr.filter(function(value,index,arr){
return value > 5;
})
console.log(newArray)
结果:[6,7]
reduce 求数组元素和
用法:
var arr=[1,2,3,4,5,6,7];
var sum=arr.reduce(function(pre,next,index,array){
return pre + next;
})
console.log(sum)//28
有任何错误和不足的地方,还望各位指正。