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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

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