「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战」
数组去重
去除重复数值之后,应该是 [1,2,3,4,5]
基本思路1 indexOf()
建立一个新的数组,将原始数值中的数值,向新的数组中写入
如果这个数值不存在于新的数组中,就执行写入,如果已经存在,就不写入
建立一个空数组,来存储原始数组中,不重复数据 循环遍历,获取原始数组arr中的所有数值
var arr = [1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,4,4,4,4,5,5,5,5,5]
var newArr = [];
arr.forEach(function(v){
// 在新数组中,查找当前获取的原始数组的数值
// newArr.indexOf(v) 执行结果如果是 -1
// 证明在新数组中,没有这个原始数组的数据
if(newArr.indexOf(v) === -1){
// 将这个数据,写入到新数组中
newArr.push(v)
}
})
console.log( newArr );
字符串去重
原理相同,只是字符串不能使用forEach()循环
通过for...in来循环遍历,字符串
key存储的是每个字母的索引下标
var str = 'aaabbbbcccddddeeeeefffff';
var newStr = '';
for(var key in str){
// str[key] 是 当前循环,获取的索引下标,对应的字符串中的字母
// newStr.indexOf(str[key]) 判断 新字符串中,是否有当前这个字母
// 如果结果是 -1 证明新字符串中没有这个字母
if(newStr.indexOf(str[key]) === -1){
// 执行字符串拼接操作,将这个字母拼接入新的字符串中
newStr += str[key];
}
}
console.log(newStr);
文件名称由两部分组成,
文件名.扩展名
在执行一些操作时,要判断文件类型是否符合规定的类型
例如上传图片,经常要求必须是 jpg 类型的图片
就需要获取 文件名称 中的 扩展名 来进行判断
文件名是任意的名称形式 可以是 123.456.7989.jpg 123.456.7989.html
我们无法确定,扩展名具体的字符个数
只能确定 是文件名中 最后一个点 之后的内容,一定是扩展名
需要截取的是 最后一个点 之后的 内容
var fileName = '123.456.abc.jpg';
找到最后一个点的位置 --- lastIndexOf()
执行结果是 最后一个点的索引下标
实际需求的是,点之后的内容,不包括点
实际截取扩展名的起始字符索引,是 点索引+1
var num = fileName.lastIndexOf('.') ;
console.log(num);
var res = fileName.substr(num+1);
从这个位置开始,截取至字符串的尾部
要截取至字符串末位,只需要定义一个起始字符的索引下标
substring substr 效果相同,爱用哪个用那个
可以写成一行代码
var res = fileNam( fileName.lastIndexOf('.') +1);
console.log(res);