数组的认识

递归函数

  • 递归:函数内部,直接或者间接调用函数自己,递归一定要有出口,不然就是死递归
    ------------- 注意:return 除了返回一个结果,终止函数的执行
    break: 用于终止循环

      function fn(n) {
      var jc = 1;
      if (n > 1) {
      jc = n * fn(n - 1)
      }
      // 递归的出口
      if (n == 1) {
      jc = 1;
      }	
      return jc;
      }
      console.log(fn(5));
    

对象

万事万物皆对象:对象是一组无序的相关属性和方法的集合
对象由属性和方法组成
属性:静态的描述信息: 身高,体重,年龄…
方法:动态的行为: 吃饭, 学习,睡觉…

        对象属性
        obj.name = '张三丰';
        obj.age = 112;
        obj.weight = 200;
        obj.sex = '男'

         对象的方法
        obj.eat = function(){
        console.log('会吃吗') }
        .... 
       console.log(obj);
        对象的属性:键值对组成
        var obj = {
            age:112,
            name:'张三丰',
            sex:'男',
            weight:200
        }

       for in循环遍历对象
       obj代表的是整个对象
        for(var k in obj){
            console.log(k); // 键
            console.log(obj[k]); //值
            console.log(k, obj[k]);
        }

数组的概念

数组:一组数据的有序的集合 (可以存储任意数据类型的值)

        var x = 10;
        var arr = [12,19,18,21,34];
        打印方式太麻烦
        console.log(arr[0],arr[1],arr[2],arr[3],arr[4]);

        var arr1 = ['张三','李四','王五','赵六','钱七']
         循环打印
        0 1 2 3 4
        for(var i= 0;i<5;i++){
            document.write(arr1[i]+'<br>')
        }
        5: 代表数组的元素的个数。可以通过arr.length来获取

        console.log(arr1.length);
        for(var i= 0;i<arr1.length;i++){
            document.write(arr1[i]+'<br>')
        }

         细节:1. 数组的元素是从编号为0 的元素开始的,  最后一号元素 是  arr.length-1 = 总个数-1

              2. 遍历时从0 开始 


        for(var i= 0;i<=arr1.length-1 ;i++){
            document.write(arr1[i]+'<br>')
        }


        console.log(arr1[arr1.length-2]);

数组定义的方式

  1. 字面量法

    var arr = [12,34,1,43,12,3]
    console.log(arr);
    
  2. 构造函数的方式

    var arr1 = new Array(12,34,1,43,12,3)
    console.log(arr1);
    var arr2 = new Array(5);  //  不是存储了一个叫5的元素,而是  存储了             5个空的元素
    console.log(arr2);
    

数组api之增删元素

arr:Array(数组对象)–>对象

  1. pop() 删除尾部的1个元素,并返回删除的元素

  2. push(参数1,…) 尾部追加1个或者多个元素,并返回新数组的长度

  3. shift() 删除头部的1个元素,并返回删除的元素

  4. unshift() 头部追加1个或者多个元素,并返回新数组的长度

  5. sort( function(a,b){ return a-b } ) 数组元素排序

  6. reverse() 数组的元素的反转

  7. join(’-’) 将数组元素以 - 的形式拼接成字符串,返回的是拼接好的字符串

  8. indexOf() 返回元素首次出现的下标(索引)位置,找不到了返回的是-1

  9. lastIndexOf() 从后往前进行查找

     Array:  对象   js内置对象:提供了很多很多的方法供我们使用
        //  Array对象:属性和方法
        //   属性: length
        console.log('--------------------------------------------------------------------------------');
        //   方法:push()  尾部追加  方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
        //         arr.push(参数1,参数2)
        //         var arr = [1,2,3];
        //         arr.push(4); // 追加元素
        //         console.log(arr); //追加完毕的结果
        console.log('--------------------------------------------------------------------------------');
        //         pop()   尾部删除  方法从数组中删除最后一个元素,并返回该元素的值
        //         var arr = [1,2,3,4,5];
        //         //console.log(arr.pop()); //打印的是返回的元素
        //         arr.pop();
        //         arr.pop();
        //         console.log(arr);
        console.log('--------------------------------------------------------------------------------');
        //         shift()     头部删除   方法从数组中删除第一个元素,并返回该元素的值
        //         var arr = [1, 2, 3, 4, 5];
        //         // console.log(arr.shift()); //返回的是删除的元素
        //         arr.shift();
        //         arr.shift();
        //         console.log(arr);
        console.log('--------------------------------------------------------------------------------');
        //         unshift()  头部添加  方法将一个或多个元素添加到数组的开头,并返回该数组的新长度(该方法修改原有数组)。
        //         var arr = [1, 2, 3, 4];
        //         arr.push(5);
        //         arr.unshift(0);
        //         console.log(arr);
        console.log('--------------------------------------------------------------------------------');
        //         sort()   排序(数字)    可以从小到大进行排列     可以从大到小进行排列  
        //         语法: arr.sort(function(a,b){return a-b;})
        //         var arr = [12, 3, 52, 6, 78, 9];
        //         arr.sort(function (a, b) {
        //            return a - b;
        //         })
        console.log('--------------------------------------------------------------------------------');
        //         reverse()   : 反转 数组中的元素
        var  arr = [12,32,34,21,4];
        //         arr.reverse();
        //         console.log(arr);
    

数组去重

indexOf() :返回数组中首次出现元素的下标位置,找不到的返回-1

    // 需求:将数组中重复的元素去掉,留下不重复的元素
    var arr = [1, 2, 1, 3, 2];
    var newarr = []
    // 原理:在新数组中查找 遍历过来的元素,找不到的就放到新数组中

    // 找不到和找到怎么表示呢? 
    // for (var i = 0; i < arr.length; i++) {
    //     // newarr.indexOf(arr[i])==-1代表在新数组中没有找到该(arr[i])元素,就存入新数组中
    //     if (newarr.indexOf(arr[i]) == -1) {
    //         newarr.push(arr[i])
    //     }
    // }
    // console.log(newarr);

    for (var i = 0; i < arr.length; i++) {
        var flag = true;  // 假设我的新数组中 没有任何一个元素,遍历过来的一律存入

        // 该循环就是一个过滤器,用于判断新数组中是否含有过来的元素,有的话就行将状态改为false
        
        // 找到了 重复的元素 将flag的转为false,
        if (newarr.indexOf(arr[i]) != -1) {
            flag = false;
        }

        // 如果状态改为false之后,就不放入数组中了
        if (flag) {
            newarr.push(arr[i]);
        }
    }

    console.log(newarr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值