• javascript数组详解


    1.数组的一些方法:

     1 <script type="text/javascript">
     2         //var arr = [1,2,3,4];  //性能略高
     3         var arr = new Array(1,2,3,4,5,6,7,8,15);//性能略低,没什么区别
     4         arr.push(9);//添加到尾部
     5         arr.pop();//删除尾部,一次删除一个
     6         arr.shift();//从头部删除一个
     7         arr.unshift();//从头部添加一个
     8         //splice 先删除一段,再添加一段元素splice(开始,长度)  ,,替换;
     9         arr.splice(2, 3);
    10         arr.splice(2, 0, 'a','b','c');//删除0个元素,再添加abc
    11         
    12         //alert(arr);
    13         //alert(arr.join('-'));//合并数组,变成字符串
    14         arr.slice(1,3);//slice(开始, 结束),不包括结束位置,取子数组
    15         var arr1 = ['23', '33','1','2','12'];
    16         //arr1.sort();//排序,默认情况下,把所有的东西都当作字符串处理
    17         arr1.sort(function(num1,num2){
    18             return num1 - num2; //按大小排序
    19             /* if(num1 < num2){
    20                 return -1; //第一个比第二个小/靠左
    21             }else if(num1 > num2){
    22                 return 1; //右
    23             }else{
    24                 return 0; //一样
    25             } */
    26         });
    27         //alert(arr1);
    28         
    29         var str = 'abc';//String
    30         var str2 = new String('abc');//包装类
    31         
    32         var arr2 = ['张三', '失传','王五','李梅','六位',''];
    33         arr2.sort(function (str1, str2){
    34             return str1.localeCompare(str2);//按拼音顺序排序
    35         });
    36         //alert(arr2);
    37         //alert(arr2.reverse());
    38         
    39         var str3 = 'wxy';
    40         var str4 = 'digua';
    41         //alert(str3+str4);
    42         //alert(str3.concat(str4));//链接,数组链接
    43         
    44         var arr4 = [1,2,3,4,5];
    45         //alert(arr4.toString());
    46         //alert(arr4);//跟上面一样
    47         arr4.toString = function(){
    48             return 'abc';
    49         }
    50         function show (){
    51             alert('a');
    52         }
    53         show.toString = function(){
    54             return '就不让你看';
    55         };
    56         //alert(show);
    57         var mu = 255;
    58         //alert(mu.toString(16));
    59         
    60         //数组常用方法
    61         //1.数组去重
    62         //2.数组复制
    63         /*数组去重
    64         function hasContain(arra, num){
    65             var i=0;
    66             
    67             for(i=0;i<arra.length;i++)
    68             {
    69                 if(arra[i]==num)
    70                 {
    71                     return true;
    72                 }
    73             }
    74             
    75             return false;
    76         }
    77 
    78         var arra=[1,2,3,4,1,5,6,4,8];
    79         var aResult=[];
    80         var i=0;
    81 
    82         for(i=0;i<arra.length;i++)
    83         {
    84             if(!hasContain(aResult, arra[i]))
    85             {
    86                 aResult.push(arra[i]);
    87             }
    88         }
    89 
    90         alert(aResult);
    91         */
    92         
    93         var arrc = [1,2,4,6];
    94         
    95         //var arrb = arrc.concat();
    96         var arrb = arrc;
    97         arrb.push(5);
    98         alert(arrc);
    99     </script>

     迭代方法:

    every():对数组中的每一项运行给定函数,每一项返回true,则返回true

    some():对数组中的每一项给定运行函数,对任一项返回true,则返回true

    filter():对数组中的每一项给定运行函数,返回该函数会返回true的项构成的数组

    map():对数组中的每一项给定运行函数,返回每次函数调用的结果组成的数组

    forEach():对数组中的每一项给定运行函数,这个方法没有返回值

    以上方法都不会修改数组中的包含的值

    eg:

    var numbers = [1,2,3,4,5,4,3,2,1];
    var everyResult1 = numbers.every(function(item,index,array){
        return (item>2);
    });
    //  alert(everyResult1); //false
    
    var everyResult2 = numbers.some(function(item,index,array){
        return (item>2);
    });
    //  alert(everyResult2); //true
    
    var everyResult3 = numbers.filter(function(item,index,array){
        return (item>2);
    });
    //  alert(everyResult3); //3,4,5,4,3
    
    var everyResult4 = numbers.map(function(item,index,array){
        return item*2;
    });
    //  alert(everyResult4); //2,4,6,8,10,8,6,4,2

    归并方法:

    reduce():迭代数组的所有项,然后构建一个最终的返回组,reduce()从数组的第一项开始,逐个遍历到最后一项

    reduceRight():迭代数组的所有项,然后构建一个最终的返回组,reduceRight()从数组的最后一项开始,逐个遍历到第一项

    这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。传递给reduce()和reduceRight()的函数接收4个参数值:前一个值、当前值、项的索引和数值对象。这个函数返回的任何值都会作为第一个参数自动传给下一项。第一次迭代发生在数组的第二项上,因此第一个参数是数组的第一项,第二个参数就是数组的第二项。

    eg:

    var values = [1,2,3,4,5];
    var sum = values.reduce(function(prev,cur,index,array){
        return prev + cur;
    });
    alert(sum); //15
    //第一次执行回调函数,prev是1,cur是2.第二次,prev是3(1加2的结果),cur是3(数组的第三项)。这个过程会持续到把数组中的每一项都访问一遍,最后返回结果。
    
    var values = [1,2,3,4,5];
    var sum = values.reduceRight(function(prev,cur,index,array){
        return prev + cur;
    });
    alert(sum); //15
    //第一次执行回调函数,prev是5,cur是4。最终结果相同
  • 相关阅读:
    6.24Java网络编程之IP
    Network
    Network
    Network
    Network
    ES
    JavaWeb
    ES
    ES
    ES
  • 原文地址:https://www.cnblogs.com/wxydigua/p/3242745.html
Copyright © 2020-2023  润新知