js 笔记_03 数组 栈 队列

取整

  • Math.ceil():取整,若带小数点,则进一;
  • Math.round(): “四舍五入”(只看小数点后一位), 该函数返回的是一个四舍五入后的的整数;
  • Math.floor(): “向下取整” ,即小数部分直接舍去。

递归

满足以下三个特点就是递归:

  • 函数自己调用自己;
  • 一般情况有参数;
  • 一般情况下有 return;

递归可以解决循环能做的所有事情,甚至循环不容易解决的事情,但是需要大量的开内存,很危险。
方法:

  • 首先去找临界值,即无需计算,获得的值;
  • 找这一次和上一次的关系;
  • 假设当前函数已经可以使用,调用自身计算上一次;
例题

有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一只,第二天照此方法,吃掉剩下桃子的一半多加一只,天天如此,到第 n 天早上,猴子发现只剩一只桃子,问原来这堆桃子有多少只?
peach(n) 表示第 n 天的桃子数。

分析:
peach(10) / 2 - 1 =peach(9);
peach(10) = (peach(9) + 1) * 2;
peach(n) = (peach(n - 1) + 1) * 2;

有上面的方法,可知:

  • 临界值为 1;
  • 关系为 peach(n) = (peach(n - 1) + 1) * 2;

故代码如下:

function peach(n) {
            if(n == 1){
                return 1;
            }
            return (peach(n - 1) + 1) * 2;
        }

        alert(peach(5)); //46

数组

声明数组的方式:

let arr = new Array(10, true, "hello");

上述方法中,只有一个数字时,数字不表示内容,而是声明多大长度的数组。
而下面这种方法则不是:

let arr =[10, true, "hello"];
数组的相关知识
  • Math.random():随机 [0, 1)
  • parseInt ( Math.random() * 10 ):随机 0~9 的整数;
  • 数组.concat (新增数据...):既可以拷贝原数组,生成新数组;也可以合并数组;
    返回值:合并成的新数组,原数组不会改变
  • 数组.slice (start, end):可以基于当前数组获得指定区域元素 [start, end),提取出元素生成新数组;
    返回值:生成的新数组,原数组不会改变
  • 数组.splice (start, length, 数据1, 数据2...):增加,删除,修改
    start:开始截取的位置;
    length:截取的元素的长度;
    第三个参数开始:在 start 位置插入的元素;删除直接不写;修改先删除再增加;
    返回值:被删除的元素组成的新数组,原数组会改变
操作 start length 第三个参数开始往后
增加 开始增加的位置 0 新增元素1,新增元素2…
删除 开始删除的位置 需要删除的元素个数 不写
修改 开始修改的位置 需要修改的元素个数 替代元素1,替代元素2…
  • 数组.join (字符串):将数组中的元素用传入的拼接符,拼接成一整个字符串;
    返回值:拼接好的字符串;
  • 数组.reverse(); :逆序;
  • 数组.sort(); :数组排序;默认按字符串从小到大排序,存在问题;
    用 sort 严格从小到大排序:
let arr = [1,10,30,29,5];
arr.sort(function(value1,value2){  //严格从小到大
	return value1 - value2;
})
console.log(arr);
同理,用sort 严格从大到小排序:
arr.sort(function(value1,value2){  //严格从大到小
    return value2 - value1;
})
console.log(arr);

栈结构

  • 特点:先进后出;
  • 结构:从同一头进,从同一头出;
  • 数组.push (元素1,元素2...);:从数组的末尾添加元素;
    返回值:插完元素数组的新长度;
  • 数组.pop();:从数组的末尾取下一个元素;
    返回值:数组最后一个元素;

队列结构

  • 特点:先进先出;
  • 结构:从末尾进,从头部出;
  • 数组.push (元素1,元素2...);:从数组的末尾添加元素;
    返回值:插完元素数组的新长度;
  • 数组.shift ();:从数组的头部取下一个元素;
    返回值:数组第一个元素;
  • 数组.unshift (元素1,元素2...);:从数组的头部添加元素;
    返回值:插完元素数组的新长度;

猜你喜欢

转载自blog.csdn.net/Web_blingbling/article/details/107533815
今日推荐