javascript小练习

一、数组去重

数组:

['red', 'yellow', 'green', 'blue', 'yellow', 'green', 'blue']
目标,把旧数组中不重复的元素选取放到新的数组中,重复的元素只保留一个,放到新数组中去重
 
 
实现的结果:

 

 实现数组去重的代码:

方法一:

 1 var arr = ['red', 'yellow', 'green', 'blue', 'yellow', 'green', 'blue'];
 2     var newArr = [];
 3     for (var i = 0; i < arr.length; i++) {
 4         var index = arr.indexOf(arr[i]);
 5 
 6         if (newArr.indexOf(arr[i]) == -1) {
 7             newArr.push(arr[i]);
 8         }
 9 
10         console.log(newArr);
11 
12     }

方法二:

 1 function unique(arr) {
 2 
 3         var newArr = [];
 4         for (var i = 0; i < arr.length; i++) {
 5 
 6             if (newArr.indexOf(arr[i]) === -1) {
 7                 newArr.push(arr[i]);
 8             }
 9         }
10 
11         return newArr;
12 
13     }
14 
15     var test = ['red', 'yellow', 'green', 'blue', 'yellow', 'green', 'blue'];
16     console.log(unique(test));

 

实现数组去重的核心算法:

1、

遍历旧的数组,之后拿着旧数组元素直接去新的数组,如果该元素没有在新的数组中没有出现过,就进行添加否则不添加
2、
那怎么才知道元素不存在呢?
 答: 可以利用 新数组.indexOf(数组元素) 如果返回-1 就说明该数组中没有该元素
 

二、查找字符串中所有s出现的位置以及次数

字符串:

'abaasdffggghhjjkkgfddsssss3444343'
 
实现的最终的结果:

 

 

实现该结果的代码:

 1 var str = 'abaasdffggghhjjkkgfddsssss3444343';
 2     var index = str.indexOf('s');
 3    
 4     var num = 0;
 5 
 6     for (var i = 0; i < str.length; i++) {
 7         if (index !== -1) {
 8             console.log(index);
 9             index = str.indexOf('s', index + 1);
10             num++;
11 
12         }
13 
14     }
15 
16     console.log('s出现的总次数:' + num);

核心算法思路:

 1、

  首先查找第一个s出现的位置
 2、
 然后只要indexOf 返回的结果不是-1,就继续进行查找
 3、
 由于indexOf只能查找第一个,所以后面的查找,一定是当前索引加一,从而继续查找
 

 

三、数字数组的排序(冒泡排序)

数组:

[77, 63, 99, 88, 3, 2, 22, 11, 45, 1]
 

 

 

实现代码:

function numSort(arr) {

        arr.sort(
            function(a, b) {
                return a - b;

            });
        return arr;
    }

    console.log(numSort([77, 63, 99, 88, 3, 2, 22, 11, 45, 1]));

实现的核心:调用js的内置方法sort()

注意的是:sort()方法里面可以跟函数,如果是return a-b;(升序排序)return b-a;(降序排序)

 

四、数组的翻转排序

同样以上面的数组为例:

[77, 63, 99, 88, 3, 2, 22, 11, 45, 1]

实现的结果:

 

 

1 function arrReverse(arr) {
2 
3         arr.reverse();
4 
5         return arr;
6     }
7 
8     console.log(arrReverse([77, 63, 99, 88, 3, 2, 22, 11, 45, 1]));

实现的核心:调用js的内置方法reverse()

posted @ 2019-12-23 11:00  perfect*  阅读(565)  评论(0编辑  收藏  举报
$(function() { $('#cnblogs_post_body img').each(function() { let imgSrc = $(this).attr('src'); let year = parseInt(imgSrc.substr(imgSrc.indexOf('g')+1,4)); if(year >= 2022){ imgSrc += `?watermark/2/text/amlndWl5YW4=/font/5a6L5L2T/fontsize/15/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast`; $(this).attr('src', imgSrc) } }) })