首页 > 代码库 > js数组

js数组

<script>var arr=[1,2,a];arr.length=5;p(arr[3]); //undefinedarr.length=1;p(arr[1]); //undefined</script>

数组的枚举
数组长度上限2的32次方

<script>var arr=[f,1,2,a,b,c];for(var k in arr){    p(arr[k]);}//for in有时无法保证枚举顺序for(var i=0;i<arr.length;i++){    p(arr[i]);}/*f12abc*///v 数组的值,key下标,ar数组对象arr.forEach(function(v,key,ar){    ar[key]=v+"_";})p(arr);//f_,1_,2_,a_,b_,c_p(Object.keys(arr));  //0,1,2,3,4,5p(Object.getOwnPropertyNames(arr));//0,1,2,3,4,5,lengthp(arr.__proto__==Array.prototype); //truep(Object.getOwnPropertyNames(Array));// length,name,arguments,caller,prototype,isArray,observe,unobserve</script>

Array类的属性

p( Array.isArray(arr)) //true or false

<script>var arr=[f,1,2,a,b,c];p( arr.constructor);//function Array() { [native code] }p(Array.constructor);//function Function() { [native code] }p(Array.prototype.constructor);//function Array() { [native code] }p(arr.constructor==Array.prototype.constructor);//truevar arr=[f,1,2,a,b,c];var a=w;var arr1=[q,w1];var b=arr.concat(a,arr1);p(b);//f,1,2,a,b,c,w,q,w1var c=a.concat(b);p(c);//ab</script>

Array.prototype对象的属性

every

 

<script>var arr=[f1,1,2,a,b,c];function callback(element,index,arrobj){    return arrobj[index]=element+_;    //此函数必须return true默认return false,到return false就停止执行}arr.every(callback);  //truep(arr);//f1_,1_,2_,a_,b_,c_</script>

 

filter

 

<script>var arr=[f1,1,2,a,b,c];function callback(element,index,arrobj){    if(!isNaN(element)) return true;}var arr1=arr.filter(callback);  //truep(arr1);//1,2</script>

 

indexOf()

 

<script>var arr=[f1,1,2,a,b,c,a];var r=arr.indexOf(a,3); //3  第二个参数不传的话默认从开始查找var r1=arr.indexOf(a,4);//6p(r,r1);//3,6p(abc.indexOf(c));//2</script>

 

join

 

<script>var arr=[f1,1,2,a,b,c,a];var str=arr.join(-);p(str);//f1-1-2-a-b-c-a</script>

 

lastIndexOf()

<script>var arr=[f1,1,2,a,b,c,a,d];var r=arr.lastIndexOf(a,7);var r2=arr.lastIndexOf(a,3);p(r,r2);//6,3  找不到就返回-1</script>

map()

 

<script>var arr=[f1,1,2,a,b,c,a,d];function callback(element,index,obj){    obj[index]=element+"__";    return element+"_";}var arr1=arr.map(callback);p(arr1);//f1_,1_,2_,a_,b_,c_,a_,d_p(arr);//f1__,1__,2__,a__,b__,c__,a__,d__</script>

 

pop()

 

<script>var arr=[f1,1,2,a,b,c,a,d];var arr1=arr.pop();//dp(arr,arr1);//f1,1,2,a,b,c,a       d</script>

 

reduce(callbackfn[,initialValue);
callbackfn函数对数组计算,返回最后一次计算结果
callbackfn(x,y)
如果在调用reduce时有初始值,那么x就做为初始值
y依次为数组元素
如果没有初始值
数组第一个元素作为初始值,y为从第二个元素开始的数组元素

<script>var arr1=[5,2,3,4,a];function callback(x,element){    p(x+":"+element);    return x+"_"+element;}var r=arr1.reduce(callback);p("<hr>");p(r);/*没初始值得结果5:25_2:35_2_3:45_2_3_4:a------------------------5_2_3_4_a有初始值得结果   r=arr1.reduce(callback,‘init‘);init:5init_5:2init_5_2:3init_5_2_3:4init_5_2_3_4:a-----------------------------------init_5_2_3_4_a*/</script>

reduceRight(callbackfn,[,initval])
从数组的末尾向前执行reduce操作
reverse数组转置

 

<script>var arr=[f1,1,2,a,b,c,a,d];arr.reverse();p(arr);//d,a,c,b,a,2,1,f1</script>

 

shift删除数组的第一个元素,并返回该元素

<script>var arr=[f1,1,2,a,b,c,a,d];p(arr.shift());p(arr);</script>

 

unshift(item0,item1)
添加元素导数组开头,返回添加后数组的长度

<script>var arr=[f1,1,2,a,b,c,a,d];p(arr.unshift(first,second));//10p(arr);//first,second,f1,1,2,a,b,c,a,d</script>

slice(start,end)生成一个下标从start到end的新数组

<script>var arr=[f1,1,2,a,b,c,a,d];p(arr.slice(1,4));//1,2,ap(arr);//f1,1,2,a,b,c,a,d</script>

splice(start,delcount,[item0,item1,...])
删除下标由start开始的delcount个元素,如果指定第三个参数,则将该参数插入到start的位置
返回删除的元素

<script>var arr=[f1,1,2,a,b,c,a,d];p(arr.splice(1,2));//1,2p(arr);//f1,a,b,c,a,dvar arr=[f1,1,2,a,b,c,a,d];p(arr.splice(1,2,new,nn));//1,2p(arr);//f1,new,nn,a,b,c,a,d</script>

some(callbackfn[,thisarg]) 以此对数组中的元素应用callbackfn,如果callbackfn返回true则终止
callbackfn(数组元素,下标,数组对象)

<script>var arr=[f1,1,2,a,b,c,a,d];function callbackfn(element,index,arrobj){    p(element+":"+index+":"+typeof arrobj);}arr.some(callbackfn);</script>

toLocaleString();//将数组转换为与地区相关的字符串类型
toString转换为字符串

<script>ar arr=[f1,1,2,a,b,c,a,d];var r=arr.toLocaleString();var r1=arr.toString();p(r,r1);p(typeof r,typeof r1);</script>

 

toSource();

 

js数组