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

    变量的自动转换
    === 等同符:不会发生类型的自动转化!
    == 等值符:会发生类型自动转化、自动匹配!
    判断相等没有equals()方法,只有2个等号3个等号。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Untitled Document</title>
            <script type=text/javascript charset=utf-8>
    /**
    js数组更加类似java的容器。长度可变,元素类型也可以不同!
    数组长度随时可变!随时可以修改!(length属性)
    push、pop
    shift、unshift
    splice、slice(不改变数组)
    concat(不改变数组)、join(不改变数组)、sort、reverse等
     */
            var arr = new Array();//这里可以写长度也可以不写长度
            var arr = [1,2,3,4,true ,'abc' , new Date()] ;
            alert(arr.length);
            arr.length = 5 ;//截断
            alert(arr.toString()); //1,2,3,4,true
            
            /**
             *  push 和 pop 方法
             */
            var arr = [new Date(),false] ;
            var result = arr.push(1,2,true);    //可以一次推多个值,push方法向数组中追加元素(返回值为新数组的长度)
            alert(arr);
            alert(result);
            var obj = arr.pop();        //从数组的尾部删除一个元素(返回值为删除的元素)
            alert(arr);
            alert(obj);
            
            /**
             * shift 和 unshift 方法
             */
            var  arr = [1,2,3, true , new Date()];
            var r1 = arr.shift();            //从头部移除一个元素(返回移除的元素)
            alert(arr);
            alert(r1);
            var r2 = arr.unshift(10,false);    //从头部插入多个元素(返回新数组的长度)
            alert(arr);
            alert(r2);
            
            /**
             * splice、slice 方法 (截取的方法)
             * splice方法改变数组
             * slice方法不改变数组
             */
            // splice(subString()): 第一个参数 :起始位置,包头,起始位置坐标是0,
            //            第二个参数 :表示截取的个数
            //             第三个参数以后:表示追加的新元素个数
            var arr = [1,2,3,4,5];
            arr.splice(1,2,3,4,5);    //从下标1开始删除2个并加入345, 134545
            alert(arr);
            arr.splice(1,2);//1545
            arr.splice(1);//1,从1位置开始截,后面全部截取掉
            
            // slice: 
            var arr = [1,2,3,4,5];
            var reuslt = arr.slice(2,4);//下标从0开始   
            alert(reuslt);        //返回截取的内容,包头不包尾,3,4     
            alert(arr);//1.2.3.4.5,数组还是没变
            
            //操作数组的方法: concat join
            var arr1 = [1,2,3];
            var arr2 = [true , 4 , 5];
            var reuslt = arr1.concat(arr2);
            alert(reuslt);//1,2,3,true , 4 , 5
            alert(arr1);//1,2,3
            alert(arr2);//true , 4 , 5
            
            var result = arr1.join('-');        //在每个元素之间加入内容(不操作数组本身)
            alert(arr1); //1,2,3
            alert(result);//1-2-3
            
            /**
             * sort排序 
             * reverse倒叙
             */
            var arr1 = [5,2,1,4,3];
            var arr2 = [10,2,4,1,7];
            arr1.sort();
            alert(arr1);//1,2,3,4,5
            arr1.reverse();//倒叙放置,不是排序
            alert(arr1);//34125
            arr2.sort();
            alert(arr2);//字符串比较,1 10 2 4 7,所以要写自定义比较函数,
            
            function compare(value1 , value2){
                if(value1 < value2){
                    return -1 ;
                } else if(value1 > value2){
                    return 1 ; //返回正数交换value1、value2位置
                } else {
                    return 0 ;
                }
            }
            arr2.sort(compare);
            alert(arr2);//124710
            </script>
        </head>
        <body>
        </body>
    </html>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Untitled Document</title>
            <script type=text/javascript charset=utf-8>
    /*位置方法:indexOf      lastIndexOf
    迭代方法:every  filter   forEach   some    map
    缩小方法:reduce    reduceRight */
    
            var arr = [1,2,3,4,5,4,3,2,1];
            // 查找返回索引位置
            var index = arr.indexOf(4);//3,只找一次,
            // 第一个参数表示起始位置 第二个参数还是值 
            var index = arr.indexOf(4,4);//5
            //他们查找数组比较的时候 '==='    
            // lastIndexOf 
            var index = arr.lastIndexOf(2);//7
            
            //5个新加迭代的方法
            //every :对于数组每一个元素进行一个函数的运行 如果都返回true 最后则返回true 如果有一个返回false最后结果则返回false
            var result = arr.every(function(item , index , array){
                return item > 2 ;//每项都大于2
            });
            alert(result);
            
            //filter :对于数组的每一个元素进行一个函数的运行 给定的函数去执行 把过滤后的结果返回 
            var result = arr.filter(function(item , index , array){
                return item > 2 ;
            });
            alert(result);
            
            //forEach :循环数组每一项的值 并执行一个方法 
            arr.forEach(function(item, index, array){
                    alert(item);
            });
            
            //map 对于数组的每一个元素进行一个函数的运行 可以经过函数执行完毕后 把新的结果返回
            var result = arr.map(function(item, index, array){
                return item*2;
            });
            alert(result);//2,4,6,8,10,8,6,4,2
            
            //some :对于数组每一个元素进行一个函数的运行 如果有一项返回true 最后则返回true 如果每一项都返回false最后结果则返回false
            var result = arr.some(function(item, index, array){
                return item >=5 ;
            });
            alert(result);
            
            //reduce    reduceRight
            //遍历的起始位置不同  
            //前一个值 , 当前值 , 索引位置 , array
            var result = arr.reduce(function(prev , cur , index , array){
                        return prev + cur ;
            });
            alert(result);//25
            var result = arr.reduceRight(function(prev , cur , index , array){
                        return prev + cur ;
            });
            alert(result);//25
            </script>
        </head>
        <body>
        </body>
    </html>
  • 相关阅读:
    面试题25二叉树中和为某一值得路径+递归函数详细解析
    [Codeforces 1199D]Welfare State(线段树)
    [Codeforces 1199C]MP3(离散化+二分答案)
    [Codeforces 1191D] Tokitsukaze, CSL and Stone Game(博弈论)
    [Codeforces 639F] Bear and Chemistry (Tarjan+虚树)(有详细注释)
    [HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP)
    [Codeforces712D] Memory and Scores(DP+前缀和优化)(不用单调队列)
    [Codeforces722E] Research Rover (dp+组合数学)
    [POJ3612] Telephone Wire(暴力dp+剪枝)
    [Codeforces600E] Lomsat gelral(树上启发式合并)
  • 原文地址:https://www.cnblogs.com/yaowen/p/6859091.html
Copyright © 2011-2022 走看看