菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
405
0

js03 数组

原创
05/13 14:22
阅读数 28992

变量的自动转换
=== 等同符:不会发生类型的自动转化!
== 等值符:会发生类型自动转化、自动匹配!
判断相等没有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>

 

发表评论

0/200
405 点赞
0 评论
收藏