JavaScript【倒计时】、【数组去重】、【查找字符串中重复元素】
4.倒计时
案例分析
①核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的。
②用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
③把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)
转换公式如下:
●d= parselnt(总秒数/ 60/60/24); //计算天数
●h= parselnt(总秒数/ 60/60%24) // 计算小时
●m= parseInt(总秒数/60 %60); // 计算分数
●s= parseInt(总秒数%60);
//计算当前秒数
*代码中声明的变量times除以1000是毫秒转换成秒(1s=1000ms)
5.数组去重
// 有一个数组,要求去除数组中的重复元素
// 目标:把就数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个,放到新数组中去重
// 核心算法:遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组中没有出现过,就添加1,否则不添加
//如何知道该元素是否存在?利用 新数组.indexOf(数组元素),如果返回是-1,就说明新数组里面没有该元素
function unique(arr) {
var newArr = [];
for (i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
var demo = unique(['red', 'blue', 'yellow', 'red', 'green', 'yellow']);
console.log(demo);
6.查找字符串中重复元素
//查找字符串:"abcoecfjqpdojfjiow"中所有o出现的位置及次数
//核心算法:先查找第一个o出现的位置
//然后,只要indexOf返回的结果不是-1,就继续往后查找
//因为indexOf只能查找到第一个,所以后面的查找,利用第二个参数,当索引加1,从而继续查找
var str = "obcoecfjqpdojfjiow";
var index = str.indexOf('o');
var num = 0;
while (index !== -1) {
console.log(index);
num++;
index = str.indexOf('o', index + 1);
}
console.log('“o”输入的次数为:' + num);