美文网首页Web前端之路让前端飞
js中的数组对象和 Math对象

js中的数组对象和 Math对象

作者: 誩先生 | 来源:发表于2019-12-09 21:16 被阅读0次

    数组对象

    创建数组

    数组可以存储任意数据类型的数据
    存储方式分为字面量方式存储、构造函数方式存储
    数据类型:5基1复
    5基本:number、string、boolean、null、undefined
    1复杂:object、function,array

    var now = new Date();  //构造函数方式
    var arr = new Array();  //构造函数方式
    

    例如:

    //1、字面量方式创建
    var arr = [1,2,'s',[],{}];
    console.log(arr);
    //2、构造函数方式创建
    var arr1 = new Array(1,2,3,4);
    console.log(arr1);
    //如果参数只有一个并且是number类型,这个参数表示创建数组的个数
    var arr2 = new Array(4);
    console.log(arr2);
    //3、遍历数组
    var arr3 = [1,2,3,4,5,6,7,8,9];
    for(var i = 0;i<arr3.length;i++){
    console.log(arr3[i]);
    }
    //和数组相关的split
    var str = “2019-11-19”;
    console.log(str.split(“-”,2))
    

    数组方法:添加、删除

    添加元素
    push:在数组的末尾添加元素,方法中可以传入多个值,值就是要添加的数组中的值,返回数组的总长度
    unshift :和push方法方向相反,push是在数组的末尾添加,unshift是在数组的开头添加元素,返回数组的总长度
    删除元素 无参数
    pop:在数组的末尾删除一个元素,该方法没有参数,返回被删除的元素
    shift:在数组的开头删除一个元素,返回被删除的元素,该方法没有参数

    var arr = ['a','b','c','d'];
    //1、push方法:参数可以有多个值,末尾添加元素 
    var n = arr.push('e','f');
    console.log(n);//返回当前数组的长度
    console.log(arr);
    //2、pop方法:在末尾删除一个元素,没有参数
    var del = arr.pop(); //返回被删除的元素
    console.log(del);
    console.log(arr);
    //3、unshift方法:在头部添加元素
    var cd = arr.unshift('g','h');
    //shift 在头部删除一个元素,返回被删除的元素
    var del1 = arr.shift(); 
    console.log(cd);//返回当前数组的长度
    console.log(del1);
    console.log(arr);
    

    splice

    集添加数组元素、删除数组元素、替换数组元素功能于一身
    index必需。整数,规定添加/删除元素的位置(具体的下标),使用负数可从数组结尾处规定位置。
    howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。
    如果要做数组添加第二个参数设置为0
    item1, ..., itemX 可选。向数组添加的新项目。(添加,替换)
    注:
    (1) 如果做数组元素添加,需要给该方法添加三个参数,一个都不能少
    (2)如果做数组元素删除:
    一个参数:表示从当前位置开始删除,删除到末尾
    两个参数:第一个参数表示从第几元素的位置开始删除,第二个参数几个元素
    (3)如果做数组元素替换,需要给该方法添加三个参数,一个都不能少,说是替换,其实就是删了重填!
    Array包含被删除元素的新数组,如果有的话。

    var arr = [1,4,6];
    //① 添加方法
    arr.splice(2,0,9);
    console.log(arr);
    //② 删除方法
    arr.splice(1);//一个参数表示从当前位置开始删除,删除到末尾
    arr.splice(1,1);//两个参数表示从第一个元素的位置开始删除,1个元素
    //③ 替换方法
    arr.splice(1,1,10);//从数组的第一个元素开始删除,删除1个,用10代替
    arr.splice(1,2,'c','d');
    console.log(arr);
    

    数组排序

    sort排序以及自定义排序

    sort默认从小到大(升序),默认按字符串ASCII编码方式进行排序如果使用自定义排序,需要给sort方法传入参数,参数必须是函数
    如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
    如果想按照其他标准进行排序,就需要提供比较函数。
    例如:
    情况1:如果数组中是纯数字、位数不相等的情况就需要自定义排序
    情况2: 如果数组中的元素是对象形式,也需要自定义排序
    该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
    相邻(后一位元素和前一位元素)的两个值作比较
    比较函数应该具有两个参数 a 和 b
    若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
    若 a 等于 b,则返回 0。
    若 a 大于 b,则返回一个大于 0 的值。
    总结:
    如果a - b 则从小到大排列 升序
    如果 b - a 则从大到小排列 降序
    Date.parse(‘具体时间’) 将具体时间转换成对应的时间戳

    var arr = [
                {"date":'2019-09-01'},
                {"date":'2019-09-05'},
                {"date":'2019-07-01'},
                {"date":'2018-06-01'},
            ]
            //arr.sort();
            arr.sort(paixu('date'));
            function paixu(attr){
               return function(a,b){
                var date = Date.parse(a[attr]);
                var date1 = Date.parse(b[attr])
                return date-date1;
               }
            }
           console.log(arr);
    

    数组的选择排序和冒泡排序

    选择排序
    原理:首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,直到排序完毕。

    var arr = [5,8,7,4];
    for(var i = 0 ; i < arr.length ; i++){
    for(var j = i + 1; j< arr.length ; j++){
    if(arr[i] > arr[j]){
    var temp = arr[i];
    arr[i] = arr[j];
    arr[j] = temp;
    }
    }
    }
    console.log(arr);
    

    冒泡排序
    概念:

    冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法

    解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。

    2.第一轮的时候最后一个元素应该是最大的一个。

    3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。
    这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。

    数组操作方法

    join 将数组按特定标志组合成字符串,默认分隔逗号
    split 将字符串按照特定的分隔符转换成数组,可以自定义分隔符位置
    reverse 用于颠倒数组中元素的顺序(由大到小或者由小到大相互切换)
    concat 用于连接两个或多个数组。
    注意:该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本
    indexOf 元素是否存在数组中,在就返回下标,不在就返回-1
    lastIndexOf 元素最后一次出现的位置是否存在数组中,在就返回下标,不在就返回-1
    toString() 数组转换成字符串

    //1.join:将数组按特定标志组合成字符串
    var arr = [1,2,3];
    console.log(arr.join('-'));
    //2.reverse :倒序
    arr.reverse();
    console.log(arr);
    //3.concat:组合数组,返回一个新的数组,注意concat的数组顺序
    var arr2 = ['a','b','c'];
    console.log(arr.concat(arr2));
    //4.indexOf : 元素是否存在数组中,在---返回下标,不在-1
    var arr1 = [1,2,3,'html',5,6,7,8];
    if(arr1.indexOf("html")!=-1){
    arr1.splice(arr1.indexOf("html"),1);
    }
    console.log(arr1);
    

    数组迭代方法

    every
    针对数组元素做些判断。
    总结:该方法只有判断的功能并没有获取具体的功能!!!
    ① 如果数组中跟条件进行比较 检测到有一个元素不满足,则整个表达式返回false,且剩余的元素不会再进行检测。
    ②如果所有元素都满足条件,则返回 true。
    语法格式:

    数组名.every(function(值,下标){
    检索条件
    })
    或者
    数组名.every(函数名)
    function 函数名(value){
    }
    

    some
    针对数组元素做些判断,如果结果有一个为true 则返回的结果为true
    语法格式:

    数组名.some(function(值,下标){
    
    })
    或者
    数组名.some(函数名)
    function 函数名(value){
    }
    

    filter
    针对数组元素做些判断,满足条件的元素,会组成一个新的数组,并且返回
    语法格式:

    数组名.filter(function(值,下标){
    })
    或者
    数组名.filter(函数名)
    function 函数名(value){
    }
    

    map
    返回一个新的数组,数组中的元素为原始数组元素调用函数处理后的值,按照原始数组元素顺序依次处理元素
    语法格式:

    数组名.map(function(值,下标){
    })
    或者
    数组名.map(函数名)
    function 函数名(value){
    }
    

    forEach
    没有返回值,就是一个简单的循环
    语法格式:

    数组名.forEach (function(值,下标){
    })
    

    Math对象

    Math 对象并不像 Date 和 String 那样是对象的类,因此没有构造函数 Math()
    像Math.sin() 这样的函数只是函数,不是某个对象的方法。
    无需创建它,通过把 Math 作为对象使用就可以调用其所有属性和方法。
    语法结构:Math.sin()....

    数学对象方法

    floor向下取整(去掉小数部分)
    ceil向上取整 只要有小数就进位
    abs绝对值(绝对值是指一个数在数轴上所对应点到原点的距离) 默认用||表示正数的绝对值= 正数负数的绝对值= 正数
    pow幂 例如:3的3次幂
    sqrt 开根号60 = 4*15 = 2倍根号15
    random 随机数0-1 但是不包括1
    round 四舍五入

    //Math.floor 向下取整 去掉小数部分
    console.log(Math.floor(4.666));
    //Math.ceil 向上取整 只要有小数就进位
    console.log(Math.ceil(5.001));
    //Math.round 四舍五入
    console.log(Math.round(3.69));
    //Math.abs 绝对值
    console.log(Math.abs(100));
    //Math.pow 幂
    console.log(Math.pow(3,2));
    //Math.sqrt 开根
    console.log(Math.sqrt(60));
    //Math.random 随机数
    console.log(Math.random() * 10);
    console.log(Math.random() * 20 + 30);
    

    相关文章

      网友评论

        本文标题:js中的数组对象和 Math对象

        本文链接:https://www.haomeiwen.com/subject/xnmigctx.html