zoukankan      html  css  js  c++  java
  • JavaScript数组

    JavaScript数组

    1、创建

    var arrayObj = new Array();
    var arrayObj = new Array([size]);
    var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]);

    示例:

    复制代码
                var array11 = new Array();  //空数组
                var array12 = new Array(5);  //指定长度,可越界
                var array13 = new Array("a","b","c",1,2,3,true,false);  //定义并赋值
                var array14=[];  //空数组,语法糖
                var array15=[1,2,3,"x","y"];  //定义并赋值
     
    复制代码

    .2、访问与修改

    var testGetArrValue=arrayObj[1]; 

    arrayObj[1]= "值";

    复制代码
     
                //4.2、访问与修改
                array12[8]="hello array12";  //赋值或修改
                console.log(array12[8]);   //取值
                //遍历
                for (var i = 0; i < array13.length; i++) {
                    console.log("arrayl3["+i+"]="+array13[i]);
                }
                //枚举
                for(var i in array15){ 
                    console.log(i+"="+array15[i]);  //此处的i是下标
                }
     
    复制代码

    结果:

    3、添加元素

    将一个或多个新元素添加到数组未尾,并返回数组新长度

    arrayObj. push([item1 [item2 [. . . [itemN ]]]]);

    将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度

    arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);

    将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回被删除元素数组,deleteCount要删除的元素个数

    arrayObj.splice(insertPos,deleteCount,[item1[, item2[, . . . [,itemN]]]])

    示例代码:

    复制代码
     
                //4.3、添加元素
                var array31=[5,8];
                //添加到末尾
                array31.push(9);
                var len=array31.push(10,11);
                console.log("长度为:"+len+"——"+array31);
                //添加到开始
                array31.unshift(4);
                var len=array31.unshift(1,2,3);
                console.log("长度为:"+len+"——"+array31);
                //添加到中间
                var len=array31.splice(5,1,6,7);  //从第5位开始插入,删除第5位后的1个元素,返回被删除元素
                console.log("被删除:"+len+"——"+array31);
     
    复制代码

    运行结果:

    4、删除

    移除最后一个元素并返回该元素值

    arrayObj.pop();

    移除最前一个元素并返回该元素值,数组中元素自动前移

    arrayObj.shift(); 

    删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素

    arrayObj.splice(deletePos,deleteCount); 

    示例:

    复制代码
     
                //4.4、删除
                var array41=[1,2,3,4,5,6,7,8];
                console.log("array41:"+array41);
                //删除最后一个元素,并返回
                var e=array41.pop();
                console.log("被删除:"+e+"——"+array41);
                //删除首部元素,并返回
                var e=array41.shift();
                console.log("被删除:"+e+"——"+array41);
                //删除指定位置与个数
                var e=array41.splice(1,4);  //从索引1开始删除4个
                console.log("被删除:"+e+"——"+array41);
     
    复制代码

    结果:

    5、截取和合并

    以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素

    arrayObj.slice(start, [end]); 

    将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组

    arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); 

    示例: 

    复制代码
     
                //4.5、截取和合并
                var array51=[1,2,3,4,5,6];
                var array52=[7,8,9,0,"a","b","c"];
                //截取,切片
                var array53=array51.slice(2);  //从第3个元素开始截取到最后
                console.log("被截取:"+array53+"——"+array51);
                var array54=array51.slice(1,4);  //从第3个元素开始截取到索引号为3的元素
                console.log("被截取:"+array54+"——"+array51);
                //合并
                var array55=array51.concat(array52,["d","e"],"f","g");
                console.log("合并后:"+array55);
     
    复制代码

    结果:

    6、拷贝

    返回数组的拷贝数组,注意是一个新的数组,不是指向

    arrayObj.slice(0); 

    返回数组的拷贝数组,注意是一个新的数组,不是指向

    arrayObj.concat(); 

    因为数组是引用数据类型,直接赋值并没有达到真正实现拷贝,地址引用,我们需要的是深拷贝。

    7、排序

    反转元素(最前的排到最后、最后的排到最前),返回数组地址

    arrayObj.reverse(); 

    对数组元素排序,返回数组地址

    arrayObj.sort(); 

    arrayObj.sort(function(obj1,obj2){}); 

    示例:

    复制代码
     
                var array71=[4,5,6,1,2,3];
                array71.sort();
                console.log("排序后:"+array71);
                var array72=[{name:"tom",age:19},{name:"jack",age:20},{name:"lucy",age:18}];
                array72.sort(function(user1,user2){
                    return user1.age<user2.age;
                });
                console.log("排序后:");
                for(var i in array72) console.log(array72[i].name+","+array72[i].age);
     
    复制代码

    结果:

    8、合并成字符

    返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。

    arrayObj.join(separator); 

    示例代码:

    复制代码
     
                //4.8、合并成字符与将字符拆分成数组
                var array81=[1,3,5,7,9];
                var ids=array81.join(",");
                console.log(ids);
                
                //拆分成数组
                var text="hello nodejs and angular";
                var array82=text.split(" ");
                console.log(array82);
     
    复制代码

    运行结果:

    Es5新增的数组为有颜色的

    1、toString()
      作用:将数组转换为字符串,并返回,不改变原数组

    2、join(seperator)
      作用:返回一个由指定连接符连接的字符串
      参数:seperator(连接符)

    3、concat(arr1,arr2…)
      作用:拼接多个数组,并返回拼接后的数组,且不改变原数组

    4、reverse()
      作用:数组反转,返回反转后的数组,会改变原数组

    5、sort()
      作用:对数组进行排序,默认情况下,按照元素的Unicode码进行排序,并会改变原数组
    注意:允许通过自定义的排序函数来指定数字的排序规则
    语法:arrayName.sort(排序函数)

    6.pop()       作用:方法用于删除并返回数组的最后一个元素。

    7.shift()

             作用方法用于删除并返回数组的第一个元素

    8..unshift()

          作用向数组的开头添加一个或更多元素,并返回新的长度。
        参数:unshift(newData1, newData2, ......)

    9.push()

        作用向数组的末尾添加一个或更多元素,并返回新的长度。
        参数:push(newData1, newData2, ......)

    10.slice()

      作用:可从已有的数组中返回选定的元素。该方法接收两个参数slice(start,end),strat为必选,表示从第几位开始;end为可选,表示到第几位结束(不包含end位),省略表示到最后一位;start和end都可以为负数,负数时表示从最后一位开始算起。

    11.splice()

      作用向数组中添加,或从数组删除,或替换数组中的元素,然后返回被删除/替换的元素。
    参数:splice(start,num,data1,data2,...); 所有参数全部可选。

    12.toString()

     作用转换成字符串,类似于没有参数的join()。该方法会在数据发生隐式类型转换时被自动调用,如果手动调用,就是直接转为字符串。

    13.valueOf()

     作用返回数组的原始值(一般情况下其实就是数组自身),一般由js在后台调用,并不显式的出现在代码中

    14.indexOf()

     作用根据指定的数据,从左向右,查询在数组中出现的位置,如果不存在指定的数据,返回-1。该方法是查询方法,不会对数组产生改变。
    参数:indexOf(value, start);value为要查询的数据;start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1

    15.lastIndexOf()

     作用根据指定的数据,从右向左,查询在数组中出现的位置,如果不存在指定的数据,返回-1。该方法是查询方法,不会对数组产生改变。
    参数:lastIndexOf(value, start);value为要查询的数据;start为可选,表示开始查询的位置,当start为负数时,从数组的尾部向前数;如果查询不到value的存在,则方法返回-1

    16.forEach()

     作用ES5新增方法,用来遍历数组,该方法没有返回值。forEach接收的回调函数会根据数组的每一项执行,该回调函数默认有三个参数,分别为:遍历到的数组的数据,对应的索引,数组自身。
    参数:forEach(callback);callback默认有三个参数,分别为value,index,self

    17.map()

     作用1.同forEach功能;2.map的回调函数会将执行结果返回,最后map将所有回调函数的返回值组成新数组返回。
    参数:map(callback);callback默认有三个参数,分别为value,index,self

    18.filter()

     作用1.同forEach功能;2.filter的回调函数需要返回布尔值,当为true时,将本次数组的数据返回给filter,最后filter将所有回调函数的返回值组成新数组返回(此功能可理解为“过滤”)。
    参数:filter(callback);callback默认有三个参数,分别为value,index,self。

    19.every()

     作用判断数组中每一项是否都满足条件,只有所有项都满足条件,才会返回true。

    参数:every()接收一个回调函数作为参数,这个回调函数需要有返回值,every(callback);callback默认有三个参数,分别为value,index,self。

     作用1:当回调函数的返回值为true时,类似于forEach的功能,遍历所有;如果为false,那么停止执行,后面的数据不再遍历,停在第一个返回false的位置

     作用2:当每个回调函数的返回值都为true时,every的返回值为true,只要有一个回调函数的返回值为false,every的返回值都为false

    20.some()

     作用判断数组中是否存在满足条件的项,只要有一项满足条件,就会返回true。
    参数:some()接收一个回调函数作为参数,这个回调函数需要有返回值,some(callback);callback默认有三个参数,分别为value,index,self。

    功能1:因为要判断数组中的每一项,只要有一个回调函数返回true,some都会返回true,所以与every正好相反,当遇到一个回调函数的返回值为true时,可以确定结果,那么停止执行,后面都数据不再遍历,停在第一个返回true的位置;当回调函数的返回值为false时,需要继续向后执行,到最后才能确定结果,所以会遍历所有数据,实现类似于forEach的功能,遍历所有。

    功能2:与every相反,只要有一个回调函数的返回值都为true,some的返回值为true,所有回调函数的返回值为false,some的返回值才为false


    21.reduce()

     作用从数组的第一项开始,逐个遍历到最后,迭代数组的所有项,然后构建一个最终返回的值。

    参数:reduce()接收一个或两个参数:第一个是回调函数,表示在数组的每一项上调用的函数;第二个参数(可选的)作为归并的初始值,被回调函数第一次执行时的第一个参数接收。
    reduce(callback,initial);callback默认有四个参数,分别为prev,now,index,self。
    callback返回的任何值都会作为下一次执行的第一个参数。
    如果initial参数被省略,那么第一次迭代发生在数组的第二项上,因此callback的第一个参数是数组的第一项,第二个参数就是数组的第二项。

    22.reduceRight()  

     作用(与reduce类似)从数组的最后一项开始,向前逐个遍历到第一位,迭代数组的所有项,然后构建一个最终返回的值。
    参数:同reduce。



  • 相关阅读:
    Android jni/ndk编程五:jni异常处理
    Android jni/ndk编程四:jni引用类型
    Android jni/ndk编程三:native访问java
    Android jni/ndk编程二:jni数据类型转换(primitive,String,array)
    Android jni/ndk编程一:jni初级认识与实战体验
    C++静态库与动态库
    Android——NativeActivity
    Eclipse IDE for C/C++ Developers和MinGW安装配置C/C++开发学习环境详解
    Android OkHttp3简介和使用详解*
    Android MVP 设计模式*
  • 原文地址:https://www.cnblogs.com/yu412/p/11431492.html
Copyright © 2011-2022 走看看