var colors=["red","blue","green"];
colors.length=2;
alert("colors[2]"); //undifined
数组的length属性不是只读的。如果将其length的值设为大于数组项数的值,则新增的每一项都会取得undefined值。
可以方便的在数组末尾添加新项,比如
colors[colors.length]="black";
colors[colors.length]="brown";
数组最多可以包含4294967295个项,这是来自FFFFFFFF团深深的,额,善意。
判断是否是数组:Array.isArray(value)
anArray.join(",");
数组也有push和pop方法,还有shift可以获得第一项unshift推入到队头。
还有sort可以排序,reverse可以反序。
var colors=new Array();
colors[0]=0;
colors[1]=1;
colors.unshift(3);
console.log(colors);
colors.sort();
console.log(colors);
colors.reverse();
console.log(colors);
sort() 方法可以接受一个方法为参数 ,这个方法有两个参数。分别代表每次排序比较时的两个数组项。
sort()排序时每次比较两个数组项都会执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。
concat方法先创建副本,再返回新数组。
var colors=["red","green"];
var colors2=colors.concat("yellow",["black","brown"]);
console.log(colors);
console.log(colors2);
数组还有slice方法,接受1到2个参数,一个参数的话就返回当前值到末尾,两个的话就返回两个之间的值。不会影响原数组的值。
var colors3=colors2.slice(1);
var colors4=colors2.slice(2,4);
console.log(colors3);
console.log(colors4);
console.log(colors2);
还有个splice方法感觉很厉害。删除插入替换无所不能。
var colors5=colors2.splice(2,4);
//从2开始删到4,返回2到4的值
console.log(colors5);
console.log(colors2);
var colors6=colors2.splice(2,0,"hello");
//从2开始删0个,插入hello
console.log("zhelikaishikan");
console.log(colors6);
console.log(colors2);
//还可以用这个实现替换
var colors7=colors2.splice(1,1,"hello");
console.log(colors7);
console.log(colors2);
还有indexOf和lastIndexOf两个方法,一个从开头向后找,一个从后面往前面找。返回位置。
数组还有五个迭代方法
every()对数组的每一项运行给定元素,如果所有的项都返回true,则返回true
filter()对数组的每一项运行给定元素,返回会返回true的项构成的数组。
forEach()对数组的每一项运行给定元素,没有返回值。
map()对数组的每一项运行给定元素,返回函数调用的结果组成的数组。
some()对数组的每一项运行给定元素,如果任一项返回true,则返回true
以上方法都不会修改数组所包含的值。
console.log("下面是迭代");
//下面是迭代
var num=[8,1,2,3,4,5,6,7,8,9];
var everyResult=num.every(function(item,index,array){return(item>2);});
console.log(everyResult);
var someResult=num.some(function(item,index,array){return(item>2);});
console.log(someResult);
var filterResult=num.filter(function(item,index,array){return(item>2);});
console.log(filterResult);
var mapResult=num.map(function(item,index,array){return(item>2);});
console.log(mapResult);
这个也是迭代:reduce和reduceRight,迭代所有项,返回一个最终的值。第一个从前往后,第二个从后往前。
var sum=num.reduceRight(function(prev,cur,index,array){return (prev+cur);});
console.log(sum);