知识点一:数组转换成字符串
JS中对象基本都有toString()与join()方法。方法就是函数,就是功能。
1、toString()方法会返回由数组中每个值以逗号拼接成的字符串。
2、join()可以
案例解释:
var arr = Array('P','H','P');
var str = arr.toString(); //结果 P,H,P ,str是字符串格式,arr还是数组
#join的实际应用
var str2 = arr.join(' | '); //结果 P|H|P
#不给参数的join情况
var str2 = arr.join(); //如果没有给join传递参数,或传递undefined默认都会使用逗号作为分隔符,老版本浏览器不都是这样默认的,建议给定参数。
知识点二:通过内置方法给数组添加或删除元素(模拟栈方法)
1、push()方法可以接受任意数量的参数,把他们逐个添加到数组的末尾,并返回修改后的数组的长度。
2、pop()方法从数组末尾移除最后一项元素,减少数组的length值,然后返回移除的元素。
代码示例一用法如下:
var arr = Array('p','h');
echo(arr.length); //输出2
var nLength = arr.push('M');
echo('数组长度现在是:'+arr.length+"返回值nLength="+nLength); //输出 3
arr.pop(); //删除最后一项(也叫弹出)
echo(arr.length); //输出2
for(p in arr){
echo('arr['+p+']='+arr[p]);
}
/*
输出:
arr[0]=p
arr[1]=h
*/
echo('------------push()与pop()案例二-------------');
var arr = Array('p','h');
echo(arr.length); //输出2
arr.push('D'); //这个索引是2
arr[3]='L'; //这个索引是3
t = arr.pop(); //删除索引是3的并返回其值
echo(t); //输出:L,pop删除的是最后一项
for(p in arr){
echo('arr['+p+']='+arr[p]);
}
/*
输出:
arr[0]=p
arr[1]=h
arr[2]=D
*/
复制代码
代码示例二用法如下:
1、shift()与pop()刚好相反,是从最前端删除一个元素,改变数组的长度,并返回删除的元素
2、unshift()与push()刚好相反,是从最前端插入一个元素,改变数组的长度,并返回修改后的长度
代码示例:
var arr = ["S","E"];
echo(arr.length); //输出2
echo(arr.shift()); //把第一个元素给删除掉
echo(arr.length); //剩余最后一个元素E
for(p in arr){
echo('arr['+p+']='+arr[p]);
}
//输出:arr[0]=E
echo("------unshift()用法------");
var arr = ["E","O"];
echo(arr.length); //输出:2
echo(arr.unshift("S")); //输出:3
for(p in arr){
echo('arr['+p+']='+arr[p]);
}
/*
输出:
arr[0]=S
arr[1]=E
arr[2]=O
*/
复制代码
思考题:请同学们实现你的unshift
echo("------思考如果没有unshif()我们如何向数组的第一个元素插入新值?并且原来值的索引都向后移动一位-----");
//下面做法显然是行不通的,请开动脑筋另寻它法吧。
var arr = ["E","O"];
arr[0] = "S";
可以使用数组的splice函数()
vararr =[1,2,3,4,5];
arr.splice(0,0,8);
console.log(arr)
知识点三:数组排序函数
项目中的实际应用:按价格高低排序,按年龄大小排序,按销量排序,不胜枚举你不应该精通吗?
1、reverse()反转数组元素的顺序后返回此数组。
2、sort()方法默认按升序排列数组元素,即小的在前大的在后,排序后返回此数组。
sort()方法会调用数组元素的toString()方法强制把每项转化成字符串进行比较,
即使数组中的项都是数值,也会以字符串形式比较。
echo("请自定义一个echo函数,可以输出内容即可");
var arr = [1,3,5,7,9];
echo(arr.join("->")); //输出:1,3,5,7,9
//有时候我们希望是从大到小怎么办?
echo(arr.reverse().join("<-"));
echo("------sort()使用案例------");
var arr = [3,1,7,5,9]; //顺序混乱
echo(arr.sort().join("->")); //输出 1->3->5->7->9
var arr = [3,11,7,25,9]; //顺序混乱
echo(arr.sort().join("->")); //输出 11->25->3->7->9
/*
没有按数值大小排序,而是按字符串大小排序了。如果想以数值形式排序怎么办?
为了解决这个问题,sort()方法可以接收一个比较函数作为参数,以便我们自由指定顺序关系。
比较函数需要按如下要求写:
比较函数需要接收两个参数,
如果第一个参数应该位于第二个参数前面就返回负数,
如果两个参数相等就返回0,
如果第一个参数应该位于第二个参数后面则返回一个正数。
*/
function myCompare(v1,v2){
if(v1
return -1;
}else if(v1==v2){
return 0;
}else{
return 1;
}
//根据要求我们可以看到对于数值型也可以用 return v1-v2 ; 这一句代替上面多句
//减法结果:正,负,零
}
var arr = [3,11,7,25,9]; //顺序混乱
echo(arr.sort(myCompare).join("->")); //输出 3->7->9->11->25
说明:v1和v2的实际参数有sort函数自动传入给myCompare,大家可以想想可变函数就很好理解。
例子
functionmycompare(p1,p2) {
if(p1>p2){
return 1
}else if(p1==p2){
return 0;
}else{
return-1;
}
}
vararr =[5,1,3,2,8,9,7,0];
console.log(arr.sort(mycompare))
知识点四:数组位置查找
1、indexOf();
2、lastIndexOf();
说明:以上两个函数都接受两个参数,第一个是要查找的元素,第二个是起始索引位置。
indexOf()是从左向右查找,lastIndexOf()是从右向左查找。
返回值:返回查找元素所在的索引位置,或者在没有找到的情况下返回-1
代码解释:
echo("------数组位置查找方法indexOf()与lastIndexOf()使用案例------");
var arr = Array('P','H','P');
echo(arr.indexOf('P')); //输出:0,也就是P元素在索引为0的位置
echo(arr.indexOf('P',1)) //输出:2 ,因为是从索引为1的位置开始查找。第一次找到时候是在索引为2的元素
var arr = Array('P','H','P');
echo(arr.indexOf('P')); //输出:0,也就是P元素在索引为0的位置
echo(arr.indexOf('P',1)) //输出:2 ,因为是从索引为1的位置开始查找。第一次找到时候是在索引为2的元素
echo('---lastIndexOf()用法---')
var arr = Array('P','H','P','M','P');
echo(arr.lastIndexOf('P')); //输出 4,索引为2的位置找到4
echo(arr.lastIndexOf('P',3)); //输出 2,索引为3的位置开始向左查账找到P
复制代码
知识点五:数组的合并连接
concat:是单词concatenate的简写,把某某联系到一块,连接到一块
案例:
var arr =['SEO'];
var arr2 = ['PHP'];
var arr3 = arr.concat(arr2,'冬瓜皮');
for(p in arr3){
echo('arr3['+p+']='+arr3[p]);
}
输出:
arr3[0]=SEO
arr3[1]=PHP
arr3[2]=冬瓜皮
说明:
concat()方法基于调用它的数组的所有项创建一个新数组,然后将接收到的参数添加到这个副本末尾,最后返回新构建的数组。
如果不给concat()方法传递参数,他就是简单基于调用它的数组的所有项创建一个副本。
如果传递的不是数组,这些值会被添加到结果数组的末尾。
复制代码
/*slice:切成片;切下;划分
说明:slice([n1,n2])方法的功能是基于当前数组一或多个项创建一个新数组,slice()方法可以接受一个或两个参数
n1与n2分别代表数组的起始和结束位置(包含起始不包含结束)。
在只有一个参数情况下slice返回从指定参数开始到数组末尾。
注意:如果n1与n2是负数那么和调用数组长度加上这个数组的结果相同
例如:对于一个5项的数组调用 slice(-2,-1)与slice(3,4)等同,实际应用没人传负数。
如果n2小于n1返回空数组。
*/
echo('-----------数组切分slice()用法---------');
var arr = ['PHP','SEO','GOOD'];
var arr2 = arr.slice(1,2); //意思是索引值 n>=1 和 n<2 也就是只有一个SEO符合条件
for(p in arr2){
echo('arr2['+p+']='+arr2[p]);
}
//输出:arr2[0]=SEO