day 08 排序 ES5新增数组方法 内置对象

 

1.选择排序

var arr = [43,543,23,1,6];

    function box(arr){

        var temp = 0;

        for (var i = 0; i < arr.length-1; i++) {

            for(var j=i+1; j<arr.length; j++){

                if(arr[i] > arr[j]){

                    temp = arr[i];

                    arr[i] = arr[j];

                    arr[j] = temp;

                }

            }

        }

        return arr;

    }

    alert(box(arr));

2.sort排序

    a.按照ASCII码值排序

         var arr = ["a",4,"*",3,"$"];//有特殊字符的元素也会根据ASCII码值排序。

         var arr = [3,4,15,3,17];//在比较一个数两位数时,先比较第一位数,再比较第二位数,

                                                 结果为arr=[15,17,3,3,4]

    b.arr.sort(function(){})

        一个函数里,用另一个函数作为参数传递,另一个函数叫回调函数。

        sort(function(a,b){

            //return a-b;//从小到大排序,改变了原来的排序方式(就是不再是按ASCII码值进行排序了)。

            return b-a;从大到小排序

        })

    c.随机排序(先了解怎么用就行)

    例子:

   var arr = [53,54,3,24,12];

    

    for (var i = 0; i < 10; i++) {

        arr.sort(function(a,b){

            return Math.random()-0.5;

        })

        console.log(arr);

    }

    d.底层实现原理。(了解)

3.ES5新增数组方法

    1)forEach(function(item,index,array){});

        a.传递一个回调函数

        b.这个回调函数没有返回值

        c.回调函数的参数

            item:每个元素的值

            index:元素的下标

            array:每次遍历的数组。(这个一般不用,可以不写)

         例子

      1)arr.forEach(function(item,index,array){

           console.log(item,index,array);

           });

       2)作用forEach计算数组所有元素的和

         var sum = 0;

        arr.forEach(function(item,index,array){

        sum += item;

        });

        alert(sum);

  

2) indexOf();

        arr.indexOf(值)

        定义:检测一某个元素在数组中是否存在,如果存在返回这个元素的下标,如果不存在返-1

        a.如果有两个参数arr.indexOf(值,index)(index可以为负数,表示从数组后面开始数,从哪里开始找)

            从index开始往右查询这个值的下标;如果存在返回这个元素的下标,如果不存在返-1

        b.如果一个数组中有两个相同的值,按这种方式arr.indexOf(值);返回的是第一次出现这个数的下标

    3)map();

        这是一个映射的函数

        方法传递一个回调函数,回调函数传递三个参数,参数与forEach一样。

        通过某个条件改变原数组的值,改变后的值 会组成一个新的数组返回。

        例子:

        var arr = [54,65,434,23,4];

        var newArr = arr.map(function(item,index,array){

        return item-5;

        })

         alert(newArr);

    4)filter(function(item,index,array){});

        这是一个过滤函数

        方法传递一个回调函数,回调函数传递三个参数,参数与forEach一样。

        最终返回一个过滤后的数组

        过滤:通过某个条件,获得符合这个条件的数组元素,组成一个新数组后返回。

        例子:

        var arr = [43,43,23,6,45,34];

        var newArr = arr.filter(function(item,index,array){

        return item<10;

        })

        alert(newArr);

    5)reduce(); 归并方法   从数组下标为1的位置开始循环

        例子:      prev     next

        var arr = [53,       54,     3,24,12];

         var sum = arr.reduce(function(prev,next){//pre 开始有个默认值,这里的默认值是53.表示上一次操 作返回的结果

                                                                            //next 表示 下一个数

            document.write("return的结果是:"+prev+",循环输出的是:"+next+"<br>")

          return prev+next;

        });

       alert(sum)

4.instanceof();(关键字)

     用来检测某种引用数据类型的数据是属于哪个对象。

    不能用来检测基本数据类型。

例子:

    function box(){

           

     }

     alert(box instanceof Function);//true

  var str="ll";(基本数据类型)

  alert(str instanceof String);//false

5.扩展(了解)

    精确检测某种数据属性哪个对象。

    var type = Object.prototype.toString;

    console.log(type.call("fke"));

    console.log(type.call(5));

    console.log(type.call(null));

    console.log(type.call(undefined));

    console.log(type.call(NaN));

    console.log(type.call([]));

    console.log(type.call(true));

    console.log(type.call({}));

    console.log(type.call(function(){}));

6.内置对象

     window,String,Math,Number,Array,正则,Date

 

7.String  凡是对象,就会有属性或方法

1)String的属性:

                    (1)length:获取字符串的字符个数(只读) 

                    (2) 可以通过下标获取字符串的某个字符,但是不能修改

                             比如:str[2]:这种方式可以获取不能修改

2)String的方法:

                     (1)str.charAt(index);    //获取str字符串中index下标位置的字符

                     (2)str.charCodeAt(index);//获取str字符串中index下标位置的字符的ASCII码值。

                     (3)String.fromCharCodeAt(ASCII码值);//通过传递ASCII码值获取对应的字符。

                     

                     (4)str.indexOf("字符",);//与数组方法一样

                     (5)str.lastIndexOf("字符",index);//和indexOf()相反,第二个参数不识别负数。

                              从后往前找到一个出现的字符,index不能为负数,但是是从前数,再往前找

 

                      (6)str.substr(index,num);//截取字符串,num:截取num个字符,没有num参数,截取到最后。

                      (7)str.substring(index);//截取字符串,从index位置到最后

                               str.substring(index,i);//截取字符串,从index位置到i位置的字符,但不包含第i个。  

                      (8)str.replace("str中的字符","被替换的字符");//替换,只能替换查到的第一个字符串      

                      (9)str.split("字符串中的某个字符");把一个字符串转成数组。

                        

                      (10)toLowerCase();//把字符串转变为小写

                      (11)toUpperCase();//把字符串转变为大写

      第一个字符串变大写

                      var str = "fljewkjfelkw";

                      str = str.charAt(0).toUpperCase() + str.substr(1);

                      alert(str);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值