您的位置:首页 > Web前端 > JavaScript

javascript关于数组的几个方法

2017-11-16 19:14 316 查看
<html>
<head>
<title>004</title>
<script type="text/javascript" charset="utf-8">

//js数组是可变的,你使其长度是10也没用
/**
js中的数组类似于java里的map容器,长度可随意改变,元素类型任意。
*/
/*
var arr1=new Array(10);
var arr2=[1,2,3,true,'abc',new Date()];
alert(arr2.length);
arr2.length=5;//我们强制将数组的长度变为5
alert(arr2);//那么它会输出“1,2,3,true,'abc'”
//其实alert要求框中输入的是字符串,这个数组相当于对象,它会隐式调用toString方法,转换成字符串
*/
/*
var arr=[];
var result = arr.push(1,2,true);//该方法往空数组中添加一些元素,并且返回新数组的元素个数。

var obj=arr.pop();//该方法从数组中移除一个元素,返回值为移除的元素。
alert(arr);
alert(obj);//我试验的是移除了最后一个元素。
*/

//shift unshift方法
/*
var arr=[1,2,3,true,new Date()];
var r1=arr.shift();//移除数组中第一个元素,返回移除的元素
alert(arr);

var r2=arr.unshift(10,false);//从头部插入多个元素,返回新数组的长度。
alert(r2);
alert(arr);
*/

//splice slice方法
/*
splice方法
第一个参数,起始位置
第二个参数,表示截取的个数
第三个参数以后,表示追加的新元素。
*/
/*
var arr=[1,2,3,4,5];
//arr.splice(1,2,3,4,5);
//arr.splice(1,2);表示就截取两个
//arr.splice(1);表示起始位置后面的全部截掉
//alert(arr);//134545

var result=arr.slice(2,4);//正常截取方法,左闭右开,splice方法操作数组本身,slice方法不操作数组本身
alert(result);//3,4
*/

//操作数组的方法,concat join
/*
var arr1=[1,2,3];
var arr2=[true,4,5];
var result = arr1.concat(arr2);//将两个数组合并,不操作数组本身,将结果返回。
alert(result);

var result2=result.join('-');//该方法在每个元素中介入一个参数元素,不操作数组本身。
alert(result2);
*/

//sort方法排序,reverse方法倒叙,都是对原来数组进行操作
var arr1=[5,7,9,1,3,4];//按照从小到大的顺序进行排列
var arr2=[10,4,2,9,7,15,3];//不是按大小进行排列,将元素中的内容倒过来。
arr1.sort();
//arr2.reverse();
//(arr1);//1,3,4,5,7,9
//alert(arr2);//3,15,7,9,2,4,10

arr2.sort();
//alert(arr2);//10,15,2,3,4,7,9
/*大家可能会有所疑问,其实javascript的sort方法,不是那样排序的。
不管你是一位数字还是两位数字,都是先按一个第一个数字来比较。
例如arr2数组中第一个元素是10,他先将1拿出来进行比较,发现和15的1是相等的
然后他俩在比较第二位。
*/
function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}

arr2.sort(compare);
alert(arr2);//2,3,4,7,9,10,15
//这里有点懵逼,正序
//如果将compare方法中的1和-1互换位置的话,就变成倒叙,这里之后的学习中会进行更新。

</script>
</head>
<body>

</body>

</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息