day07-经典排序和数组去重

1.    冒泡排序

    //外层循环代表趟数 每趟确定一个最(大)值 故应有arr.length-1 趟

    var arr = [15,2,8,6,54,13,85,92,113,70,5];

    console.log(arr)

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

    //内层循环代表两两比较  arr.length个数 应比较arr.length-1次

    //且因为每一次内层循环完就有一个最值 故 还应减去最值的个数(i)

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

    if (arr[j]>arr[j+1]) {

    arr[j]=arr[j]+arr[j+1];

    arr[j+1]=arr[j]-arr[j+1];

    arr[j] -=arr[j+1];    }  }   }

    console.log(arr)

2.    选择排序

    var arr = [1,15,2,8,113,54,13,92,85,6,70,5];

    var temp;

    console.log(arr)

    //外层循环  次数arr.length-1

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

    //内层循环

    var min =i;

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

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

    min = j;   }    }

    temp=arr[min];

    arr[min]=arr[i];

    arr[i]=temp;

}

console.log(arr)

3.    数组去重的三种方法:

    3.1    常规方法: var arr=[1,2,5,9,45,65,15,2,2,2,5,45,5,];

                                console.log(arr);

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

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

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

                                arr.splice(j--,1)     }  }    }

                                console.log(arr)

    3.2    利用对象:var arr=[1,2,5,9,45,65,15,2,2,2,5,45,5,];

                                console.log(arr);

                                var obj = { };

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

                                //判断obj[]里是否有 a[i]属性名

                                if (!obj[arr[i]]) {

                                obj[arr[i]]='a';

                                }else{ arr.splice(i--,1)

                                //i--原因:因为splice删除后 后面索引自动往前移动一个位置(-1),

                                //故需要i--抵消循环的i++     }    }

                                console.log(arr)

    3.3    Set方法 不推荐 存在数据类型转换 内耗过高

                var arr=[1,2,5,9,45,65,15,2,2,2,5,45,5,];

                console.log(arr);

                //利用Set默认不允许重复 但Set属于数组 需要Array.from转换一下数据类型 此方法

                //Set属于ES6中的 有兼容问题

                var arr1= Array.from( new Set(arr))

                console.log(arr1)

4.    ES5新增数组常见方法

        2个索引方法:indexOf() 和 lastIndexOf();

        5个迭代方法:forEach()、map()filter()、some()、every();

        2个归并方法:reduce()、reduceRight();

        console.log(arr.indexOf(1)); //从左往右寻找

        console.log(arr.lastIndexOf(1)); //从右往左寻找

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

                          console.log(item, index);

                            });   //item指数组中的每个指     index指数组索引

//map()、filter()、some()、every()   要返回值

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

                return item * 2;

                }); 

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

                return item < 10;

                }) 

               console.log(arr2);     注:过滤掉不满足条件的

some()、every()    返回布尔值

        /* var isBig = arr.some(function(item, index){

        return index>10;

        }) */ 有一个满足条件即可

        var isBig = arr.every(function(item, index){

        return index<10;

        })  必须每一个满足条件

        console.log(isBig);

5    string常见API

方法                        描述

charAt()                    返回在指定位置的字符。

indexOf()                    检索字符串,返回下标

lastIndexOf( )            从后向前搜索字符串。

charCodeAt()            返回在指定的位置的字符的 Unicode 编码。

fromCharCode()        从字符编码创建一个字符串。

concat()                    连接字符串。

match()                    找到一个或多个(正则表达式的)匹配。

replace()                    替换与正则表达式匹配的子串。

search()                    检索与正则表达式相匹配的值。

slice()                        提取字符串的片断,并在新的字符串中返回被提取的部分。

split()                        把字符串分割为字符串数组。

substr()                    从起始索引号提取字符串中指定数目的字符。

substring()                提取字符串中两个指定的索引号之间的字符。

toLowerCase()        把字符串转换为小写。

toUpperCase()        把字符串转换为大写。

trim()                        去掉字符串前后空格(ES5)

startsWith()                字符串是否以某个字符开头(ES6)

endsWith()                字符串是否以某个字符结尾(ES6)

includes()                字符串是否包含某个字符(ES6)

repeat()                    重复某个字符串几次(ES6)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 某次二面时,面试官问起Js排序问题,吾绞尽脑汁回答了几种,深感算法有很大的问题,所以总计一下! 排序算法说明 (1...
    流浪的先知阅读 1,230评论 0 4
  • 1.用js实现随机选取10~100之间的10个数字,存入一个数组,并排序 //要是获取不重复的,则对随机数...
    persistlu阅读 5,676评论 0 0
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 696评论 0 0
  • 简述JavaScript起源起源于美国的Netscape公司,原名为LiveScript,后改为JavaScrip...
    3ab670b99521阅读 3,110评论 0 0
  • 记不起来是从什么时候开始,心里就种下了一个去偏远山村支教的小心愿。追溯原因嘛,我想可能是来自某一部电影,或者某些镜...
    低谷为陵阅读 3,163评论 14 4