一、数组去重
数组:
['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()