zoukankan      html  css  js  c++  java
  • 第五章:引用类型 殷的博客

    1:Array.isArray()方法

    这个方法的目的是确定某个值是不是数组

    if(Array.isArray(value)){
    
    }

    2:栈方法

    push()和pop()方法

    // 例子
            var colors=["red","blue"];
            colors.push("brown");
            colors[3]="black";
            alert(colors.length);  //4
    
            var item=colors.pop();
            alert(item);        //black

    3:队列方法

    push()和shift()方法

    // 例子
             var colors=new Array();
            var count=colors.push("red","green");
            alert(count);
            count=colors.push("black");
            alert(count);
            var item=colors.shift();
            alert(item);    //red
            alert(colors.length);

    unshift()方法

    unshift()方法和shift()方法的用途相反,它能在数组前端添加任意个项并返回新数组的长度。因此,同时使用unshift()和pop()方法,可以从相反的方向模拟队列,即在数组的前端添加项,数组的末端移除项

            var colors=new Array();
            var count=colors.unshift("red","green");
            alert(count);
    
            count=colors.unshift("black");
            alert(count);
    
            var item=colors.pop();
            alert(item);    //green
            alert(colors.length);

    4:重排序方法

    数组中存在两个直接排序的方法 reverse()和sort()

    reverse()方法会反转数组项的顺序

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

    默认情况下,sort方法按照升序排列数组项,sort()方法调用每个数组项的toString()转型方法,sort()方法比较的也是字符串

    var values=[0,25,5,33,15];
    values.sort();
    alert(values);   //0,15,25,33,5

    这样的比较不正确,因此需要sort()方法接受一个比较函数作为参数

    function compare(a,b){
            if (a>b) {
                return 1;
            } else if (a<b) {
                return -1;
            } else {
                return 0;
            }
        }
    
        var values = [0, 25, 5, 33, 15];
        values.sort(compare);
        alert(values); //0,5,15,25,33

    如果是降序,交换compare中的数值即可。

    或者更快的方法是在上述的基础上,利用reverse()方法

    5:操作方法

    *concat()方法,连接

             var colors=["red","green","blue"];
             var colors2=colors.concat("yellow",["black","blown"]);
             alert(colors);    //red,green,blue
             alert(colors2);   //red,green,blue,yellow,black,brown

    *slice()方法,基于当前数组中的一个或多个项创建一个新数组

        var colors=["red","green","blue","yellow","purple"];
        var colors2=colors.slice(1);    //green,blue,yellow,purple
        var colors3=colors.slice(1,4);  //green,blue,yellow
        alert(colors2);
        alert(colors3);

    如果slice()方法的参数中存在负数,则用数组长度加上该数组来确定相应的位置;例如,包含5项的数组上调用slice(-1,-2)与调用slice(4,3)得到的结果相同。如果结束位置小于开始位置,则返回 空数组

    *splice()方法

    (1) 删除:可以删除任意数量的项,只需指定2个参数:要删除第一项的位置和要删除的项数

            例如:splice(0,2)会删除数组中的前两项

        var colors=["red","green","blue"];
        var removed=colors.splice(0,1);  
        alert(colors);          //green,blue
        alert(removed);         //red

    (2) 插入:可以向指定位置插入插入任意数量的项,只需提供3个参数:起始位置,0(要删除的项数),和要插入的项。如果要插入多个项,可以再传入第四第五任意多个项。例如,splice(2,0,“red”,"green")会从当前位置2开始插入字符串“red”“green”

     var colors = ["red", "green", "blue"];
     var removed = colors.splice(1, 0, "yellow", "orange");
     alert(colors); //red,yellow,orange,green,blue
     alert(removed); //返回一个空数组
    

    (3) 替换:可以向指定位置插入任意的项,且同时删除任意数量的项,只需指定3个参数:起始位置、要删除的项数、要插入的任意数量的项。插入的项数不必与删除的项数相等,例如,splice(2,1,“red”,“green”)会删除当前数组位置2的项,然后再从位置2开始插入字符串“red”,“green”

    var colors = ["red", "green", "blue"];
    var removed=colors.splice(1,1,"yellow","orange");
    alert(colors);      //red,yellow,orange,blue
    alert(removed);     //green2

    6:位置方法

    indexOf()方法从数组的开头向后查找

    lastIndexOf()方法从数组的尾部开始查找

    这两个方法都接收两个参数,要查找的项和起点位置的索引

    var numbers=[1,2,3,4,5,4,3,2,1];
    alert(numbers.indexOf(4));  //3
    alert(numbers.lastIndexOf(4));  //5
    
    alert(numbers.indexOf(4,4));  //5
    alert(numbers.lastIndexOf(4,4));  //3
    
    var person={name:"yin"};
    var people=[{name:"yin"}];
    
    var morePeople=[person];
    
    alert(people.indexOf(person)); //-1
    alert(morePeople.indexOf(person));  //0

    7:迭代方法

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

    var numbers=[1,2,3,4,5,4,3,2,1];
    var everyResult=numbers.every(function(item,index,array){
        return (item>2);
    })
    alert(everyResult);   //false

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

    var numbers=[1,2,3,4,5,4,3,2,1];
    var filterResult=numbers.filter(function(item,index,array){
        return (item>2);
    })
    alert(filterResult);   //[3,4,5,4,3]

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

    var numbers=[1,2,3,4,5,4,3,2,1];
    var forEachResult=numbers.forEach(function(item,index,array){
        //执行某些操作
    })

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

    var numbers=[1,2,3,4,5,4,3,2,1];
    var mapResult=numbers.map(function(item,index,array){
        return item*2;
    })
    alert(mapResult);   //[2,4,6,8,10,8,6,4,2]

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

    var numbers=[1,2,3,4,5,4,3,2,1];
    var someResult=numbers.some(function(item,index,array){
        return (item>2);
    })
    alert(someResult);   //true

    8:缩小方法

    reduce() 和 reduceRight()

    reduce() 方法是从数组的第一项开始,逐个遍历到最后

    reduceRight()方法是从数组的最后一项开始,向前遍历到第一项

  • 相关阅读:
    jq ajax注册检查用户名
    jq ajax页面交互
    Digit Counting UVA – 1225
    Molar mass UVA – 1586
    P1571 眼红的Medusa
    A. Digits Sequence Dividing
    Codeforces Round #535 (Div. 3) a题
    Digit Generator UVA – 1583
    Good Bye 2018 B
    电梯 HDU – 1008
  • 原文地址:https://www.cnblogs.com/yinzf/p/5299814.html
Copyright © 2011-2022 走看看