js_关于数组(三)

2019-02-08  本文已影响0人  mao77_

js_关于数组(三)

1. 认识数组

js的数组是参考python中的列表来的

1.1 - 遍历数组中的元素

普通的循环(for)

    var arr = [10, 20, 1, 4, 6, 9, 30];
    for(var i=0; i<arr.length; i++){
        console.log(arr[i]);
    }
    var arr = [10, 20, 1, 4, 6, 9, 30];
    var sum = 0;
    for(var i=0; i<arr.length; i++){
        sum += arr[i];
    }
    console.log(sum);    //80
    //用循环额方式打印出来下面的没有规律的图形
    var arr = [7, 4, 1, 7, 10];
    for(var i=0; i<arr.length; i++){
        for(var j=0; j<=arr[i]; j++){
            document.write("*");
        }
        document.write("<br>");
    }

for....in

    var obj = {
        age : 20,
        sex : "male",
        name : "lisi",
        speak : function(){
        }
    }
    for(var attName in obj){
        console.log(attName, obj[attName]);
    }
    var arr = [10, 20, 1, 4, 6, 9, 30];
    for(var i in arr){
        console.log(i,arr[i]);
    }

for...of遍历

    var arr = [10, 20, 1, 4, 6, 9, 30];
    for(var  e of arr){     //复制了一份给了变量e
        console.log(e);
    }               //10,20,....
    var arr = [{age :10}, {age:20}];
    for(var obj of arr){
        obj.age = 100;
        console.log(obj);
    }
    console.log(arr);    //100/100

数组的forEach方法可以用来遍历数组

数组提供的一种遍历自己的元素的功能

    var arr = [10, 20, 1, 4, 6, 9, 30];
    arr.forEach(function(element, index){    //回调函数
        console.log(element, index);
    })
    arr.forEach(function(element, index, array))

2. 数组的转换方法

2.1 - toString():

把数组转换成一个字符串

    var arr = [10, 20, 30, 40];
    console.log(arr.toString());
    // 10,20,30,40

2.2 - join():

把数组转换成字符串,中间用的连接符号,可以自定义

    var arr = [10, 20, 30, 40];
    console.log(arr.join(" | "));
    //10 | 20 | 30 | 40

3. 数组的比较

    var arr1 = [1];
    var arr2 = [1];
    console.log(arr1 == arr2);   //false
    console.log(arr1 == "1");    //true
    console.log(arr1 == 1);    //true
    var arr = [{}, {age : 20}];
    console.log(arr.toString());
    //[object Object],[object Object]
    //任何对象默认转换成以上。

4. 数组的模拟栈的操作

栈:

其实就是操作数组尾部的元素

队列:

操作的数组头部的元素


5. 数组中元素的倒置(翻转)


6. 数组的连接

    var arr1 = [10, 20];
    var arr2 = [30, 40];
    var arr3 = [55, 77];
    var newArr = arr1.concat(arr2, arr3);
    console.log(newArr);    //返回新的,不改变原数组
    // for(var e of arr2){
    //     arr1.push(e);
    // }
    // console.log(arr1);  //(4) [10, 20, 30, 40]
    var arr1 = [10, 20];
    var arr2 = [30, 40];
    var a = [...arr1, ...arr2];  //...展开运算符
    console.log(a);

7. 数组的切片操作


8. 数组的排列算法

需要对数组中的元素进行排序


9. JS自带的排序

10. 判断数组的类型

  1. instanceof
    • arr instancceof Array
    • 一般不建议使用,容易有bug
    var arr = [];
    function foo(arr){
        if(!(arr instanceof Array)) return; //判断数组类型
        var a = arr.slice(0);
    }
    foo(10);//不判断会出错
    
  2. Array.isArray(arr)
    • ==直接定义在函数对象上的方法,就叫静态方法==
    • 函数名.静态方法()
    console.log(Array.isArray(arr));  
    console.log(typeof arr);   //object
    console.log(Object.prototype.toString.call(arr));  //object array
    

11. 二维数组

JS中的二位数组,并不是真正的二维数组,使用一维数组模拟出来的

    var arr = [
        [10, 20],
        [100, 200],
        [300]
    ];   //多维数组/二维数组
    // console.log(arr[0][0]);    //10
    for(var i=0; i<arr.length; i++){
        // var a = arr[i];
        for(var j=0; j<arr[i].length; j++){
            console.log(arr[i][j]);
        }
    }    // 10, 20, 100, 200, 300

12. 数组的去重

    var arr = [10, 10, 10, 10, 20, 1, 3, 10, 20, 4, 4];
    function toHeavy(arr){
        for(var i=0; i<arr.length; i++){
            var num = arr[i];
            // for(var j=i+1; j<arr.length; j++){
            //     if(num == arr[j]){
            //         arr.splice(j, 1);
            //         j--;
            //     }
            // }
            for(var j=arr.length-1; j>=i+1; j--){
                if(num == arr[j]){
                    arr.splice(j, 1);   //从后往前
                }
            }
        }
    }
    function toHeavy1(arr){
        var set = new Set(arr);
        arr.length = 0;
        arr.push(...set);
    }
    toHeavy1(arr);
    console.log(arr);

13. 数组的一些其他方法

    //所有的数组,都增加一个可以计算所有的元素的和的功能
    Array.prototype.sum = function(){
        var sum = 0;
        for(var i=0; i<this.length; i++){    //this就是用户创建的那些数组
            sum += this[i];
        }
        return sum;
    }
    var arr = [10, 20];
    var arr2 = [20, 30];
    console.log(arr.sum());   //30
    console.log(arr2.sum());    //50

    var a = new Array(10, 20, 30);
    console.log(a.sum());       //60

上一篇 下一篇

猜你喜欢

热点阅读