1.数组的三种去重
简单去重法
function fnNoRepeatOfArray(arr){
// 定义一个数组,用来放东西
var list = [];
// 遍历这个数组
arr.forEach(function(value){
// 判断下标
if(list.indexOf(value) === -1){
// 添加到数组
list.push(value);
}
}) // 返回list
return list;
}
//思想:找不到就放入,找到就不放 简单数组去重法
//优点:兼容性高,易于理解;
//缺点:无法区分NaN;需要特殊处理;
相邻去重法
function fn(arr){
//1.前一个
for(var i = 0,len = arr.length;i < len;i ++){
//2.后一个
for(var j = i + 1;j < arr.length;j ++){
//3.判断相不相等
if(arr[i] === arr[j]){
//4.相等就删掉 splice(j,1) 相当于删除j
arr.splice(j,1);
//5.原数组发生改变会跳过,所以执行j--
j --;
}
}
}
return arr;
}
下标去重法
function fn(arr){
var list = [];
arr.sort(function(a,b){return a - b;});
//forEach遍历一个一个遍历,里面有value 和 index 就同时遍历了一个数的数值和下标。
//抛开这个问题如果只有value,只能遍历数值.
arr.forEach(function(value,index){
if(value !== arr[index + 1]){
list.push(value);
}
})
return list;
}
//forEach返回值只能是undfeind;
//思想:排序 下标去重法 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
//缺点:耗时长,排序后数据不可控;
2. 字符串常用方法
如何声明
1. 字面量方式: ' ' or " "
2. 构造函数方式: new String ( )
属性
length:长度
方法【查、替、截、转 】
1. 查: indexOf( '字符串' ,start )
---- 查找子串在父串中第一次出现的下标位置,如果没有,则返回 -1
上菜:
var str = 'how do you do'; 0123456789101112 // 空格也算哈 // 第一次出现的是 下标4位置 console.log(str.indexOf('do')); //4 // 父串没有,返回 -1 console.log(str.indexOf('de')); //-1 // 从下标 console.log(str.indexOf('do',5)); //11 // console.log(str.indexOf('do',4)); //4
查 :lastIndexOf(' 字符串 ' ,start)
---- 查找子串在父串中从右向左查找第一次出现的下标位置,如果没有找到,返回 -1 从后往前找
上菜:
var str = 'how do you do'; console.log(str.indexOf('do')); //4 console.log(str.indexOf('de')); //-1 console.log(str.indexOf('do',5)); //11 console.log(str.indexOf('do',4)); //4 console.log(str.lastIndexOf('do')); //11 console.log(str.lastIndexOf('de')); //-1 console.log(str.lastIndexOf('do',5)); //4 console.log(str.lastIndexOf('do',4)); //4
查:charAt (index): 根据下标查找字符
查:charCodeAt(index) : 根据下标查找字符编码
2. 替:replace(旧串 ,新串):替换字符串
上菜:
//声明字符串 var str = 'how do you do'; console.log(str.replace('do','de')); //'how de you do' // for(var i = 0;i < str.length;i ++){ // str = str.replace('do','de'); // } while(str.indexOf('do') !== -1){ str = str.replace('do','de'); } console.log(str);
3. 截 :
substring(start , end) ---- 意思是从哪截取到哪,支持参数互换、不支持负数
substr(start,length ):从哪截取多少个
slice(start ,end):从哪截取到哪,不支持参数互换,支持负数
var str = 'how do you do'; console.log(str.substring(4)); //do you do console.log(str.substr(4)); //do you do console.log(str.slice(4));//do you do console.log(str.substring(4,6)); //do console.log(str.substr(4,6)); //do you console.log(str.slice(4,6));//do console.log(str.substring(6,4)); //do console.log(str.slice(6,4));//'' console.log(str.substring(-6,-4)); //'' console.log(str.slice(-6,-4));//'yo'
4. 转
toUpperCase(): 将小写转为大写字母
toLowerCase(): 将大写转为小写字母
split(‘切割符’ , length ): 将字符串切割为数组
上菜:
var str = 'How Are You'; console.log(str.toUpperCase()); //HOW ARE YOU console.log(str.toLowerCase()); //how are you var arr = str.split(' ',2); //['How', 'Are'] console.log(arr);
5. 拼
concat():合并字串
上菜:
var str = 'hello'; console.log(str.concat(' world')); // hello world
去空白
1. trim() : 删除字符串两端空白
上菜:
var str = ' a b '; console.log('(' + str.trim() + ')'); //(a b)
2. trimStart():删除字符串左端空白
var str = ' a b '; console.log('(' + str.trimStart() + ')'); //(a b )
3. trimEnd():删除字符串右端空白
var str = ' a b '; console.log('(' + str.trimEnd() + ')'); //( a b )
静态方法
String.fromCharCode(编码): 根据编码返回字符
字符串操作相关案例
去除字符串中所有的空格。
去除字符串中左边的空格与右边的空格 “ a b “ “a b” (不能使用trim方法)
统计出一个字符串中所有大写字母的数量与所有小写字母的数量
一次性输入多个成绩
影响职业因素