Javascript高级程序设计(第三版) 数组

本文详细介绍了JavaScript中数组的各种操作方法,包括长度调整、元素增删、排序、查找及迭代等。并通过实例展示了如何使用这些方法来高效地处理数组。
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);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值