冒泡排序、选择排序、数组方法

235 阅读5分钟

1、冒泡排序: 将数组当中的值从小到大排列或则从大到小排列,时将前后两个值

    从下到大:前后两个值进行比较,若前一个大于后一个将两个值位置交换,直到将最大的值交换到最后

    *   var origin = [10, 20, 30, 40, 50];
        var n = 11
        var m = 0 
        function fun(origin){               //原数组origin=[10,20,30,40,50]
            origin.push(n)                  //给原数组添加一个新数组值
            // console.log(origin)
            for(var i = 0; i < arr.length-1; i++){      //数组下标
                for(var k = 0; i < arr.length - 1 -k; k++){
                    if(arr[i]>arr[i+1]){
                        m = arr[i]
                        arr[i] = arr[i+1]
                        arr[i+1] = m
                    }
                }
            }
        }
        console.log(arr)
    *

2、选择排序法

    假设当前为最小数值下标,找到真实最小数值进行交换
    * var arr = [9,6,7,3,1,5,4,2,8,10]
        for (var k = 0; k < arr.length; k++){       //所有数组的下标
            var mindex = k                          //假设最小值的下标为k
            for (var i = k+1; i < arr.length; i++){ //需要和k比较的所有数组下标
                if(arr[mindex] > arr[i]){           //假如假设下标对应的值比与其比较的数大
                    mindex = i                      //符合条件将i的值赋给mindex
                }
            }
            //一轮比较结束后找到最小值交换两个位置的值
            var m = arr[k]                          
            arr[k] = arr[mindex]
            arr[mindex] = m
        }
        console.log(arr,'选择排序后的arr')
    *

3、数组的方法:

1、会改变数组的值

* 
1push
        语法:数组.push(数据)
        作用:从数组的尾部添加新数据
        返回值:返回的是添加新数据后数据长度length。
*
* 
2pop
        语法:数组.pop(数据)
        作用:从数据的尾部删除数据
        返回值:返回的是删除数据的值
*
* 
 3unshift
        语法:数组.unshift(数据/数组)
        作用:从数组的头部添加新数据
        返回值:返回的是添加新数据后数组长度length
*
*
 4shift
        语法:数组.shift(数据/数组)
        作用:从数组的头部删除数据
        返回值:返回的是删除的数据的值
*

添加数组是将数组内的值添加进去。

*
 5reverse
        语法:数组.reverse()        没有参数
        作用:将数组内的数据进行反转
        返回值:返回的是反转后的数组
*
* 
 6sort
        语法:  数组.sort() 没有参数    默认将数组内的数据第一位数从小到大排列
                数组.sort()有参数时,参数只能为函数   function (a , b) {return a-b}(将数组数据从小到大排列)
                                            function (a,b) {return b-a}(将数组数据从大到小排列)
        作用:将数组内部数据按顺序排列(小到大或者大到小)
        返回值:返回的是排列后的数组
*
*7、splice
        语法: 数组.splice(参数1,参数2)
                参数1:开始剪切值的索引
                参数2:要剪切的值的个数

                数组.splice(参数1,参数2,数据1,数据2,数据3,....)
                
        作用: 在数组当中剪切某一段数据
                在数组中剪切一段数据并添加新数据进去
        返回值:返回的是剪切走的数组
*

2、不改变数组的数据

*
    8、slice
        语法:数组.slice(参数1,参数2)
                参数1:开始复制的索引
                参数2:结束复制的索引
                        1、包前不包后,复制的最后一个数据(结束索引的前一位)
                        2、参数接受负数(相当于 数组.length+负数)
                        3、不传结束索引的时候,相当于 数组.length
                        4、不写参数或(0)相当于复制整个数组

        作用:复制某一段数组
        返回值:开始索引到结束索引的前一位数组
    9、concat
        语法:数组.concat()
        作用:将数据合并到数组内,从尾部合并        假如是数组是将数组内的值合并进去
        返回值:返回的是合并后的数组
    10、join
        语法:数组.join()    不传参数默认为逗号(,)       
        作用:将数据添加符号进行连接
        返回值:返回的是连接后的数据
    11、indexOf
        语法:数组.index(数据)   从头开始寻找    数组.indexOf(数据,开始索引)
        作用:在数组内从左往右寻找指定数据
        返回值:返回的是    1、如果查询到,返回的是数据出现的第一个下标
                            2、如果查询不到,返回的是 -1
    12、lastindexOf
        语法:数组.lastIndexOf(数据)     从尾部开始寻找     数组.lastIndexOf(数据,开始索引)   从后往前
        作用:在数组中从后往前寻找数据
        返回值:返回的是    1、如果查询到,返回的是数据出现的第一个下标
                            2、如果查询不到,返回的是  -1
*

遍历数组的方法:

* 
    1、forEach
        语法:数组.forEach(function(item,index,origin){})
                参数item:数组实际每一项的值
                参数index:数组对应的每一个值的下标
                参数origin:原数组
        作用:遍历数组
        返回值:undefind
    2、map:
        语法:数组.map(function(item,index,origin) {})
        作用:映射数组
        返回值:和原数组一样的值的数组(取决于return  item*103、filter
    语法:数组.filter(function(item,index,origin) {})
    作用:过滤数组
    返回值:过滤的数组,返回值取决于 return   例:item>3满足返回,不满足不返回
    4find
        语法:数组.find(function(item,index,origin) {})
        作用:查找数据
        返回值:在数组内找到的数据(第一个数据)(不是数组)
    5、findIndex
        语法:findIndex(function(item,index,origin) {})
        作用:查找数据第一个出现的下标
        返回值:返回找到的第一个数据出现的下标
    6、every    (对数组的判断)
        语法:数组.every(function(item,index,origth) {})
        参数:
                1、item数组第一项实际的值
                2、index数组第一项实际值对应的下标
                3、origin原数组
        作用:对所有数据进行判断
        返回值:1、返回true:全部满足条件
                2、返回false:至少有一个不满足
    7、some
        语法:数组.some(function(item,index,origin) {})
        作用:判断每一项实际值是否有一项满足条件
        返回值: 1true:至少有一个满足条件
                2false:全部不满足条件
    


    8、reduce
        语法:数组.reduce(function(prve,item,index,origin),'init')
        参数:
                prve:接受上一次执行的值(初始值或第一项)取决于是否传递init
                init:设置初始值
            如果传递第二个参数init,执行次数和数组长度相同(设置了初始值)
            如果只传递一个参数,执行次数 默认第一值为数据第一项,长度比数组长度少一(length-1)
        作用:累加(叠加,类似于拼接)
        返回值:累加后的结果