day6:关于数组与递归认识

递归函数

  • 递归:函数内部,直接或者间接调用函数自己,递归一定要有出口,不然就是死递归
    ------------- 注意: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));

对象

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

var obj={}
//对象属性
obj.name="张三"
obj.age=18
obj.weight=200
//对象的方法:
obj.eat=function(){
	函数内容【让其做的事情】
}

对象的属性由键值对组成,又可表达成:

var obj={
	name="张三",
	age=18,
	weight=200	
}

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

数组的概念

一组数据的有序的集合(可以存储任意数据类型的值)
一组数据的长度,可以通过length来获取
注意:数组的元素编号是从0开始,最后一个元素是:length-1

//定义一个数组
var arr=[1,2,6,4,5]
//获取该数组的长度为:
console.log(arr.length)
// 获取最后一位元素为:
console.log(arr[arr.length-1])

数组定义的2种方式

// 1、字面量法
	var arr=[1,2,3,4,5,6]
	console.log(arr)
// 2、构造函数的方式
	var arr = new Array(1,5,6,7,8,9)
	console.log(arr)
	// 2.1  需要注意 
	var arr=new Array(5);//这里表示的是存储5个空元素
	console.log(arr)

数组的赋值

// 长度赋值
var arr = [1,5,6,7,9]
arr.length=10

//数组赋值
var arr =new Array()
for (var i=0;i<30;i++){
	arr[i]=(i+1)
}
console.log(arr)

数组api–增删元素/排序/转字符串

      //   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);
    console.log('--------------------------------------------------------------------------------');
    //          join('-')   将数组元素以 - 的形式拼接成字符串,返回的是拼接好的字符串
                var arr =['张三','李四','王五','张三','李四'];
               
                console.log(arr.join('--'));
                console.log(typeof arr.join('--'));//string            
    console.log('--------------------------------------------------------------------------------');
    //          indexOf()    返回元素首次出现的下标(索引)位置,找不到了返回的是-1
                console.log(arr.indexOf('张三'));
                console.log(arr.indexOf('哈哈'));//-1
    console.log('--------------------------------------------------------------------------------');
    //          lastIndexOf()   从后往前进行查找 
                console.log(arr.lastIndexOf('张三'));
    console.log('--------------------------------------------------------------------------------');

    //          typeof 检测基本数据类型 
            console.log(typeof arr); // object
            console.log(typeof null); //object
console.log('--------------------------------------------------------------------------------');

    //          instanceof  检测是什么类型(复杂数据类型)
            console.log(arr instanceof Array); // 检测是否为数组类型,返回true代表是数组,返回false不是数组

案例-利用api,解决实际问题

  • 利用indexof和push()解决数组的去重问题
 //    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
            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、付费专栏及课程。

余额充值