1. 数组中第一个只出现一次的字母
这种解法使用的是对象的方法,通过把数组中的数值存入对象中,与其出现的次数形成键值对。用obj[ ]方法获取索引值,进行判断,即可。不过这个解法对于字符串就不管用了。
//取a-z字符串中第一个只出现一次的字母
function firstUniqueChar(arr){
var obj={}, //存储每个字母出现的次数 字母:次数
len=arr.length;
for(var i=0;i<len;i++){
if(obj[arr[i]]){
obj[arr[i]]++; //存在次数+1
} else {
obj[arr[i]] = 1; //不存在插入且次数=1
}
}
for(var prop in obj){
if(obj[prop] == 1 ) return prop; //返回第一个次数等于1的元素
}
}
2. 字符串中第一个只出现一次的字母
这个方法通过split()将字符串转换为了数组形式,使用了三目运算符进行判断,利用对象方法求出索引值。把每个索引值为1的索引都加入arr1,最后返回arr[0].也就是第一个出现的索引。
var str = 'eerrtreefffp'
function fun(str){
var arr=[],arr1=[],obj={}
arr=str.split('')
for(var i=0;i<arr.length;i++){
!obj[arr[i]] ? obj[arr[i]]=1 : obj[arr[i]]++
}
for(var i in obj){
if(obj[i]==1){
arr1.push(i)
}
}
console.log(arr1[0])
}
fun(str)
参考:https://blog.csdn.net/weixin_42203283/article/details/104895133
3. 小方法
1.字符串转数组的方法
1. 通过 str.split(’’)
let str = 'sdhaishiohfidf'
s = str.split('')
console.log(s)
/*[
's', 'd', 'h', 'a',
'i', 's', 'h', 'i',
'o', 'h', 'f', 'i',
'd', 'f'
]*/
2. 通过Array.from(str);
let str = 'absckdf'
s = Array.from(str)
console.log(s)
/*[
'a', 'b', 's',
'c', 'k', 'd',
'f'
]*/
3. 通过扩展运算符(…)
(注意:扩展运算符不能展开对象,在JSX中的{…}是表示将大括号里的语句翻译为JS语句,而不是展开运算符)
let str = 'chiskak'
s = [...str]
console.log(s)
/*[
'c', 'h', 'i',
's', 'k', 'a',
'k'
]*/
4 .通过slice()
let str = 'dsfsfak'
s = Array.prototype.slice.call(str);
console.log(s)
2.数组转字符串的方法
1. toString() 、toLocalString()
var a = [2,3,5,6,7,0]; //定义数组
var s = a.toString(); //把数组转换为字符串
console.log(s); //2,3,5,6,7,0
2. join()
var a = [1,6,5,6,7,9]; //定义数组
var s = a.join(','); //把数组转换为字符串
console.log(s); //1,6,5,6,7,9