var string = 'aaabsadbbda'
function select(str) {
var obj = {}
//把所有字符和出现次数存入对象中
for (let i = 0; i < str.length; i++) {
if (obj[str[i]]) {
obj[str[i]]++
} else {
obj[str[i]] = 1
}
}
//给对象按value进行排序
var newkey = Object.keys(obj).sort(function(aa, bb) {
return obj[bb] - obj[aa]
})
var newObj = {}
//把最大的和最小的放入新对象
newObj[newkey[0]] = obj[newkey[0]]
newObj[newkey[newkey.length-1]] = obj[newkey[newkey.length-1]]
console.log(newObj)
}
select(string)
这个有一个问题就是 不能计算出来相同次数的 比如 a和b都出现了5次 只能拿到一个
----------------------------------------------------------------------------------------------------------------------
var string = 'aaabbblllllllpo'
function select(str) {
var obj = {}
//把所有字符和出现次数存入对象中
for (let i = 0; i < str.length; i++) {
if (obj[str[i]]) {
obj[str[i]]++
} else {
obj[str[i]] = 1
}
}
//给对象按value进行排序
var newkey = Object.keys(obj).sort(function(aa, bb) {
return obj[bb] - obj[aa]
})
var newObj = {}
//把最大的和最小的放入新对象
for (var key in obj) {
if (obj[key] === obj[newkey[0]]) {
newObj[key] = obj[newkey[0]] //可以获取到所有出现次数最多的
} else if (obj[key] === obj[newkey[newkey.length - 1]]) {
newObj[key] = obj[newkey[newkey.length - 1]] //可以获取所有出现次数最少的
}
}
console.log(newObj)
}
select(string)
这样就很完美了 可以拿到多个
--------------------------------------------------------------------------------------------------------------------
var string = 'aaabbblllllllpo'
function select(str) {
var obj = {}
for (let i = 0; i < str.length; i++) {
obj[str[i]] = ++obj[str[i]] || 1
}
var max = Math.max.apply(null, Object.values(obj))
var min = Math.min.apply(null, Object.values(obj))
var newObj = {}
for (var key in obj) {
if (obj[key] === max) {
newObj[key] = max
} else if (obj[key] === min) {
newObj[key] = min
}
}
console.log(newObj)
}
select(string)
最终我们可以简化一下步骤