• JS数组


    JS中的数组和其他语言不同的是一个数组可以保存多个类型的值,比如数组中第一个位置保存一个字符类型的值,第二个可以保存数值型的值,第三个则可以保存一个对象。

    声明方式:

    var color = new Array();
    
    var color = new Array(20); //当只传一个参数的时候,其实是指定数组的长度  
    
    var color = new Array("red","blue","green");

    另外数组中的length属性不是只读的,可以通过这个属性设置数组的长度。

    例如:

    var color = new Array("red","blue","green");
    
    color[color.length]="black"; //在位置3添加一种颜色
    
    color[color.length]="brown";//在位置4添加一种颜色

    这样依次在最后的位置添加元素,对于跨长度添加也是可以的,例如在100的位置添加一个元素,但这个区间没有赋值的元素都会为undefined

    检测对象是否为数组

    if (Array.isArray(value)) {     }

    数组的tostring()、valueOf()、join()方法

    这些方法会将数组内每项元素用逗号分隔开

    color.toString(); //red,blue,green
    
    color.valueOf();//red,blue,green
    
    color.join("|"); //red|blue|green  Join方法,表示用哪种符号分隔数组元素

    另外,需要注意如果数组中的元素存在undefined或null时,则上面的方法返回的是空字符串。

    Push、pop、shift方法

    color.push("white", "org") ;

    在数组末尾添加两个元素,push里的数量不固定,可随意,另外这个方法有一个返回值,这个返回值,是数组的length

    color.pop();

    获取数组的最后一个元素。

    color.shift() 

    获取第一项,并移除第一项

    排序

    数组中提供了两个默认的排序方法,分别是reverse()和sort()

    var values=[0,1,5,10,15]

    reverse()方法是反转数组的顺序,按数组的下标倒序显示。values.reverse() //15,10,5,1,0

    sort()方法是将内部的值进行tostring后进行排序。values.sort() //0,1,10,15,5

    显然上面的排序是有错误的,因为比较的是字符串类型的所以会认为5比1大。

    如果想得到正确的结果,可以向这个方法传递一个比较函数作为参数。

    比较函数接收两个参数,如果第一个参数应该位于第二个之前,则返回一个负数,如果相等,则返回0,如果第一个位于第二之后,则返回正数,例如:

      function compare(value1, value2) {
    
     
    
                    if (value1 < value2) {
    
                        return -1
    
                    } else if (value1 > value2) {
    
                        return 1;
    
                    } else {
    
                        return 0;
    
                    }
    
                }
    values.sort(compare); 

    这样就可以正确排序了。如果逆序的话,则适当修改返回值,就可以。

    如果只是数值类型的比较,则代码更为简单。

      function compare(value1,value2){
    
                    return value1-value2
    
                }

    concat、slice 方法

    concat方法可以进行数组之间的连接,也可添加新元素

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

    slice方法接收两个参数,起始位置和操作的个数,他可以进行删除、插入、替换,slice始终都会返回一个数组,该数组包含从原始数组中删除的项,如果没有任何项,则返回一个空数组。

    var colors = ["red", "green", "blue"];
    
    var removed = colors.splice(0, 1); //删除第一项,并red
    
    var removed = colors.splice(1, 0, "yellow", "orange");//从第一个位置插入两项,返回空
    
    var removed = colors.splice(1, 1, "red", "purple"); //删除第二项,插入两项,返回blue

    位置方法 indexOf和lastIndexOf

    这两个方法都接收两个参数,分别是要查找的项和查找的起点位置。

    var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];
    
    numbers.indexOf(4); //返回3
    
    numbers.lastIndexOf(4)  //返回5 从末尾开始查找

    如果这两个方法没有找到搜索项,则返回-1。

    迭代方法

    var numbers = [1, 2, 3, 4, 5, 4, 3, 2, 1];

    every() 如果该函数的每一项都返回true,则返回true

    var everyResult = numbers.every(function (item, index, array) {
    
                    return (item > 2);
    
                }); //返回false

    filter() : 返回函数中满足条件的元素组成的数组。

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

    forEach() : 循环遍历数组,这个方法没有返回值。

    numbers.forEach(function (item, index, array) {
    
                    //执行某些操作。
    
                });

    map() : 返回每次调用的结果组成的数组。

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

    some() : 如果函数中,有任意一项返回true,则返回true

    var someResult = number.some(function (item, index, array) {
    
                    return (item > 2);
    
                }); //true

    归并方法

    归并方法有reduce()和reduceRight()两个方法,reduce是数组的第一项开始遍历到最后,reduceRight是从最后一项开始,遍历到第一项。

    这两个函数分别接受4个参数:前一个值,当前值,项的索引和数组对象。

      var values=[1,2,3,4,5]
    
      var sum = values.reduce(function (prev, cur, index, array) {
    
           return prev + cur;
    
      }); //返回15

     数组去重

    Array.prototype.unique = function()
    {
        this.sort();
        var re=[this[0]];
        for(var i = 1; i < this.length; i++)
        {
            if( this[i] !== re[re.length-1])
            {
                re.push(this[i]);
            }
        }
        return re;
    }
  • 相关阅读:
    黑马程序员——JAVA基础之System,Runtime,Date,Calendar,Math
    黑马程序员——JAVA基础之JDK1.5新特性高级for循环和可变参数
    黑马程序员——JAVA基础之Collections和Arrays,数组集合的转换
    黑马程序员——JAVA基础之Map集合
    黑马程序员——仅当源级别为 1.5 时已参数化的类型才可用的解决办法
    黑马程序员——JAVA基础之泛型和通配符
    黑马程序员——JAVA基础之Vector集合
    黑马程序员——JAVA基础之set集合
    黑马程序员——JAVA基础之List集合
    Bringing up interface eth0: Error: No suitable device found: no device found for connection 'System eth0'.
  • 原文地址:https://www.cnblogs.com/y8932809/p/5381665.html
Copyright © 2020-2023  润新知