资讯专栏INFORMATION COLUMN

与JavaScript恋爱之数组(四)

liaoyg8023 / 2312人阅读

摘要:参数传入一个函数,函数有一个参数指代数组元素。,其中是偶数方法只要有一个或多个满足条件都会返回参数参考返回一个布尔值。

数组方法
1.join(),数组转字符串,原数组没有被修改。
可选参数:一个字符串参数。数组的join()方法的实现:先把所有的单个元素都转成字符串,然后按照参数链接每单个元素,不传参数时,默认用","链接每单个元素。

var arr=[1,2,3,4,5];
var str=arr.join();
str;//"1,2,3,4,5"
var str2=arr.join("-");
str2;//"1-2-3-4-5"
var arr2=str2.split("-"); //split()是字符串的方法
arr2;//[1,2,3,4,5]

2.reverse(),数组倒序排序,数组被修改。

var arr=[5,4,3,2,1];
arr.reverse();
arr;//[1,2,3,4,5]

3.sort(),排序方法,数组被修改。
可选参数:为一个比较函数,不传时,按字母表顺序排序(如有必要转化成字符串比较)。

var arr=[2,3,1,"a","A","b","B"];
arr.sort(); //不穿参数,按字母表顺序排序
arr;//[1,2,3,A,B,a,b]
arr.sort(function(a,b){ //小到大排序
   return a-b;
});
arr.sort(function(a,b){ //大到小排序
  return b-a;
});
var arr2=["But","add","Add","but"];
arr2.sort(function(a,b){
    var x=a.toLowerCase();
    var y=b.toLoweCase();
    if(x>y) return 1;
    if(x

4.concat(),不会修改调用的数组,创建并返回一个新数组,包含调用数组的元素和参数,如果参数是是数组,链接的是数组元素而非数组本身。

var arr=[1,2,3];
arr.concat(4,5);//返回[1,2,3,4,5]
arr.concat(4,5);//返回[1,2,3,4,5]  之前的调用concat()并没有修改调用的数组
arr.concat(4,[5,6]); //返回[1,2,3,4,5,6] 参数是数组的,链接的元素而非本身
arr.concat(4,[5,[6]]);//返回[1,2,3,4,5,[6]]  

5.slice(),不会修改调用的数组,返回一个子数组,参数指定的是调用数组的索引,即开始和结束的位置,可以是0个、1个或2个,无参数时返回调用数组具有相同元素的另个数组,参数为1个时返回调用数组索引大于等于1的元素,索引为2个时返回第一个索引和最后一个索引之间的元素,包含第一个索引的元素,不包含最后一个索引的元素。

var arr=[1,2,3,4,5];
arr.slice();//返回另一个具有相同元素的数组[1,2,3,4,5]
arr.slice(1);//返回[2,3,4,5]
arr.slice(-1); //返回[5]  最后一个元素为-1,倒数第二个为-2,依次类推
arr.slice(1,-1);//返回[2,3,4] 包含第一个索引的元素,不包含第二个索引的元素

6.splice(),返回一个被删除的元素组成的数组,会修改调用数组,第一个参数必须,可传入1以上的参数,第一个参数为要开始删除的索引,第二个参数为要删除几个,后面的参数为要插入的元素。

var arr=[1,2,3,4,5,6];
arr.splice(4);//返回[5,6], arr为[1,2,3,4]
arr.splice(1,1);//返回[2],arr为[1,3,4]
arr.splice(1,2,"a","b"); //返回[3,4],  arr为[1,a,b]
arr.splice(0,0,"A","B"); //返回[],arr为["A","B",1,a,b]

7、pop()push(),shift()unshift()

var arr=[1,2,3];
arr.push(4);//返回arr的新长度4,push在末尾添加一个或多个元素
arr;//返回[1,2,3,4]
arr.pop();//没有参数,去掉数组最末尾的一个元素,返回被删除的元素
arr;//返回[1,2,3]
arr.unshift(0);//在数组最前面添加一个或多个元素,返回数组最新的长度
arr.shift();//删除数组第一个元素,返回被删除的元素

8、toString()toLocaleString(),

var arr=[1,2,"a",[["b"]]];
arr.toString();//"1,2,a,b"
//toString()和没有传参数的join()方法返回的是一样的字符串,toLocaleString()返回本地化字符串,很少用

前面我们介绍了ECMAscript3的数组方法,下面是ECMAscript5的数组方法:
1、forEach();通常我们传入一个函数,传入的函数有三个参数,第一个指代数组元素,第二个指代数组元素的索引,第三个指代数组本身。

var arr=[1,2,3,4,5];
var sum=0;
arr.forEach(function(v,i,a){
    sum+=v+1;//另一种写法sum+=a[i]+1;   
});
sum;//20,
arr;//[1,2,3,4,5],
arr.forEach(function(v,i,a){
    a[i]=v+1;
});
arr;//[2,3,4,5,6];
//forEach()方法,没有返回值。可以用来修改调用数组,和一些计算。

2、map();参数参考forEach();

var arr=[1,2,3,4,5];
var result=arr.map(function(v,i,a){
    return v-1;
});
result;//[0,1,2,3,4];
map();//返回一个新的数组,调用数组没有被修改。

3、some();参数传入一个函数,函数有一个参数指代数组元素。返回一个布尔值。

var arr=[1,2,3,4,5];
var result=arr.some(function(x){
   return x%2===0;
});
result;//true,其中2,4是偶数
//some()方法只要有一个或多个满足条件都会返回true

4、every();参数参考some(),返回一个布尔值。

var arr=[1,2,3,4,5];
var result=arr.every(function(x){
   return x%2===0;
});
result;//false,不是所有的元素都是偶数。
//方法every();所有的元素满足条件才返回true;

5、filter();参数传入一个函数,函数有个一参数指代元素。根据条件过滤掉某些元素,返回一个新数组,没有改变调用数组。filter()方法可以过滤掉稀疏数组,返回的新数组总是稠密的。

var arr=[1,2,3,4,5];
var result=arr.filter(function(){
    return x>1;
});
result;[2,3,4,5];
var arr2=[0,1,undefined,,null,""];
var result2=arr2.filter(function(x){
    return x!==undefined && x!==null && x!=="";
});
result2;//[0,1];过滤掉undefined,null和空字符串

6、indexOf()lastIndexOf(),参数为一个指定要搜索的元素;有则返回索引值,没有返回-1,indexOf()从前面开始搜索,lastIndexOf()从后搜索。这两个方法都有第二个参数表从哪里开始搜索。

var arr=[0,1,2,3,0];
var result=arr.indexOf(0);
result;//从数组前面搜索,返回第一个匹配的索引值
var result2=arr.lastIndexOf(0);
result2;//返回4,从数组后面搜索,返回第一个匹配的索引值
var result3=arr.indexOf(4);
result2;//返回-1,数组不存在4这个元素。
var result4 =arr.indexOf(0,1);
result4;//返回4,从1的位置开始搜索第一个0元素。
//我们也可以把数组所有的0元素找出来:
var arr=[0,1,0,2,0,3,0,4];
function findAll(a,x){ //传入2个参数,被遍历的数组和被搜索的元素
    var arr2=[];
    var pos=0;
    while(pos           
               
                                           
                       
                 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86497.html

相关文章

  • JavaScript恋爱数组(一)

    摘要:一认识数组数组是值的有序集合。每一个值叫一个元素,每一个元素在数组中有一个位置,以数字表示,叫做索引。数组的索引类似于对象的属性名等价于每个实例数组都继承自中的属性。构造函数传入多个参数时参数为元素。 一、认识数组数组是值的有序集合。每一个值叫一个元素,每一个元素在数组中有一个位置,以数字表示,叫做索引。第一个元素的索引为0,数组有一个length属性,为数组的元素个数,length比...

    fantix 评论0 收藏0
  • JavaScript恋爱数组(二)

    摘要:索引删除某个元素,数组不变理解数组是特殊的对象,转变成稍后章节中介绍数组的其他方法 一、数组元素的添加 var arr=[];//创建一个空数组 arr[0]=0;//给arr添加第一个元素 arr[0]=1;//修改arr第一个元素 arr.push(1);//给arr末尾添加一个元素 arr.unshift(-1);//给arr前面添加一个元素 二、数组元素的修改 var arr=...

    李增田 评论0 收藏0
  • JavaScript恋爱数组(三)

    摘要:一循环使用参数为对象,返回一个数组,为对象属性名的集合不可枚举的除外。 数组循环数组循环方法:for循环,forEach(),for/in。一、for循环1.使用Object.keys()参数为对象,返回一个数组,为对象属性名的集合(不可枚举的除外)。IE8+,然后使用for循环得到对象的值的集合。 var o={a:1,b:2,c:3}; Object.defineProperty(...

    mengera88 评论0 收藏0
  • JavaScript恋爱关于DOM对象相关的兼容封装(一)

    摘要:兼容获取指定对象下具有指定类名的对象参数为父节点对象,为类名当没有传入指定的父节点对象时默认获取下所有的指定类事件绑定兼容需要绑定事件的元素,事件类型,执行函数级及以下级 1、兼容获取指定DOM对象下具有指定类名的DOM对象 //参数:parentNode为父节点对象,className为class类名 //当没有传入指定的父节点对象时,默认获取document下所有的指定类 func...

    Shihira 评论0 收藏0
  • JavaScript恋爱对象序列化

    摘要:对象序列化是指对象状态转为字符串,也可以将字符串还原为对象。提供了和两个方法使用该方法序列化对象。只能序列化对象的可枚举的属性,对于一个不能序列化的属性将在对象序列化后生成的字符串中省略掉这个属性。 对象序列化是指对象状态转为字符串,也可以将字符串还原为对象。ECMAScript5提供了JSON.stringify()和JSON.parse()两个方法:1、JSON.stringify...

    includecmath 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<