- var arr=[3,4,5,6]
- arr.length
- arr[0]
- arr[4]...undefined
- arr[4]=8...给数组新增一个值
- arr.length=0...将数组清空
- arr[arr.length-1]...访问数组最后一位元素
- arr.push(element)...在数组最后添加一位元素,返回数组长度
- arr.pop()...返回值是数组最后一位元素,并将其从数组中删除
- arr.unshift(element)...在数组第一位增加一个元素,返回数组长度
- arr.shift()...返回数组第一位元素,并将其从数组中删除
- arr.splice(element,index,add)...用的最广,可在任意位置增删元素
a=[3,4,5];
a.splice[0,1];
表示数组从第0位开始,删除了一位数,所以数组变为[4,5],返回的值是被删掉的值
a=[3,4,5];
a.splice[0,0,1,2];
表示从第0位开始,删除0位数,并增加元素1和2,返回值是空[]
- arr.join('')...将数组变为字符串,如[3,4,5]变成“345”
- arr.join(:)...给每位元素间加冒号,如3:4:5
- arr.reverse()...让数组倒排
- arr.concat...将数组连接成一个新数组,如a.concat(b),将a与b连接为一个新数组;可以用于深拷贝,如arr2=arr.concat[],将arr的值赋给arr2,但同时改变arr2对arr没有影响
- arr.sort()...排序
arr=[3,8,7,9];
arr.sort(),arr变为[3,7,8,9]
若既有数字又有字母,则先排数字
但:[7,8,10,11]会排成[10,11,7,8],因为它会先比较第一个数字
可以用arr.sort(function(v1,v2){
reture v1>v2})来调整,即,如果v1是大于v2的就交换他俩的位置,若小于,则不替换
ES5数组拓展
- Array.isArray(obj)...用来判断一个对象是否为数组,若是,则返回true
- .indexOf(element)/lastindexOf(element)...用来查找元素的位置,从左到右(从右到左))查到第一个后返回其索引,没找到返回-1
- .forEach(function(element,index,array){})...可以对数组中每一个元素操作
- .every(function(value){return value>0?true:false})...如果数组中每一项都大于0则返回true
- .some(function(value){return value>0?true:false})...只要数组中有大于0的数则返回true
- .map(function(element){})...与forEach类似,遍历数组,回调函数返回值,组成一个新数组返回,原数组不变
var arr2=arr.map(function(value){return value*value})
- .filter(function(element){})...过滤数组,返回数组的一个子集,数组本身不改变
var arr=[3,4,-1,5];
var arr2=arr.filter(function(value){
return value>0
})
还可过滤出数组元素中含某字母的元素
var namehasc=["a","ce","c","d"].filter(function(element){
return element.indexOf("c")>-1;
})
返回的为["ce","c"]
- .reduce(function(){})...让数组中的前一项与后一项做某种计算,并累计最终值,同样得将其赋给新的变量
var a=[1,2,3,4];
var b=a.reduce(function(x,y){
return x+y})
返回的值为10
具体用法参见凹凸实验室
- 扁平化数组
var arr=[3,[2,-4,[5,7]],-3];
function flatten(arr){
var newArr=[];
function flat(arr){
arr.forEach(val){
if(Array.isArray(val)){
flat(val)
}else{
newArr.push(val)
}
})
}
flat(arr)
return newArr
网友评论