基本数据类型
undefined,null,boolean,string,number是基本数据类型,es6新增加了sysbol数据类型。
数组的定义
var names=[]; //定义数组并初始化空
names=[1,2,3];//数组赋值
names=new Array();//定义数组并初始化为空
names=new Array(5);//初始化数组并定义数组的长度
names=new Array(1,2,3)//初始化数组并赋值
names=new Array.of(1,2,3)//初始化数组并赋值,解决new Array的歧义问题
增删改查
//元素增加
names[4]="wang";//通过赋值,直接添加元素
names.unshift("zhang","liu");//首部添加
names.push("san");//尾部增加
//元素删除
var item = names.pop();//删除并获取最后一项
item=names.shift();//删除并获取第一项
names.splice(2,1,"a","b");//删除添加数据,修改源数组,第一个参数表示开始删除的位,第二个参数表示要删除的数目,后面的参数表示在删除的位置处添加的元素
//元素读取查找
var nameitem=names[2];//使用[]读取数组,这是简单的读取方式
names=names.slice(-4,6);//读取数组段,不修改源数组,负数表示从右向左数,-1表示末尾第一个元素,0表示首部第一个元素。只有一个参数时表示直到末尾,读取索引包含第一个参数,不包含第二个参数。
names.indexOf("liu");//查找匹配元素的位置,没有找到返回-1;lastIndexoOf表示最后匹配的位置。
//元素的拼接和字符串表示
names=names.concat("xiaowan",["xiaozhan","xiaosan"]);//拼接数组,不修改源数组,所以要重新赋值
var str=stringnames.join(",");//使用间隔字符串连接数组
遍历
var boolresult=names.every(function(item,index,array){
return (index>2)
});//对数组元素的每一项进行布尔运算,返回false或true.every函数,全部元素返回true时返回true.some函数某一元素返回true时返回true.
var nameresult=names.filter(function(item,index,array){
return (index>2)
});//返回数组,filter函数获取满足条件的项,map函数获取每一项计算值的集合,不改变原数组,forEach等价于for语句,对每一项处理。
nameresult=names.reduce(function(prev,cur,index,array){
return prev+""+cur;
});//reduce从前向后迭代,reduceRight从后向前迭代。迭代从第二项开始,prev初始值为第一项,cur初始值为第二项,计算值自动传给下一函数的prev,返回最后一次迭代产生的值。
map具有修改原数组得到新数组的能力,而filter只能去过滤源数组中的项,得到一个新数组。reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。就是将数组中的每一个元素进行运算后返回一个总数。
注意: reduce() 对于空数组是不会执行回调函数的。
排序
names.reverse();//数组取反
names.sort();//数组排序sort(compare),参数可为排序函数,空元素将排到最后。
function compare(student1,student2){
return student2.age-student1.age;
}//比较函数,返回-1,0,1
简化一下:a-b输出从小到大排序,b-a输出从大到小排序。
数据原型
自定义数组原型函数,实现为所有数组添加功能
function array_max(){
return Math.max.apply(Math,this);
}
Array.prototype.max=array_max;//重写数据原型链
var x=new Array(1,2,3,4,5);
var y=x.max();
网友评论