for循环 + search()方法
解析:通过 for循环
遍历字符串的每个字符,然后通过search()
方法检索
字符串里的子字符
,如果没有匹配的字符,则返回 -1
let str = 'hello';
let newStr = '';
for(let i = 0; i < str.length; i++) {
// 判断如果newStr里没有匹配的字符,
if(newStr.search(str[i]) == -1)
// 就将该字符追加到newStr里
newStr += str[i];
}
console.log(newStr) // helo
for循环+ includes()方法
解析:通过 for循环
遍历字符串的每个字符,然后通过includes()
方法判断
是否 包含
指定的子字符
;有则返回 true
,无则返回 false
;includes()
方法区分大小写。
let str = 'hello';
let newStr = '';
for(let i = 0; i < str.length; i++) {
// 判断如果newStr里不包含该字符,
if(!newStr.include(str[i]))
// 就将该字符追加到newStr里
newStr += str[i];
}
console.log(newStr) // helo
for循环 + indexOf()方法
解析:通过 for循环
遍历字符串的每个字符,然后通过indexOf()
方法查找当前字符串里是否出现过这个字符的索引,如果没有匹配到就返回 -1
let str = 'hello';
let newStr = '';
for(let i = 0; i < str.length; i++) {
// 判断如果newStr里不存在当前字符的索引,
if(newStr.indexOf(str[i]))
// 就将该字符追加到newStr里
newStr += str[i];
}
console.log(newStr) // hello
set()方法 + join()方法 (推荐
)
解析: 通过 new Set()
方法将当前字符串去重转换为数组,然后再通过 join()
方法将数组里的元素转换成一个字符串。
let str = 'hello';
let newStr = [...new Set(str)].join('');
console.log(newStr); // helo
ES6的filter()方法(推荐
)
解析: 函数都有 call()
方法,将数组专属方法filter
运行的作用域扩展到string
上。
利用 js
的 call()
方法改变宿主
,通过字符串
调用数组
的过滤
方法;(字符串本身是没有这个方法的)
利用 indexOf()
方法,把字符串里第一次出现的字符都提取出来,其他的都过滤掉。
通过 join()
方法,将过滤出来的字符连接起来,
语法:myFun.call(param1,(e,i,o) =>)
第一个参数是 this
的 指向对象
,e:
当前的字符,i:
当前字符的索引 ,o:
原始字符串
let str = 'hello';
let newStr = [].filter.call(str,(e,i,o) => o.indexOf(e) == i).join('');
console.log(newStr); // helo