统计一个字符串出现最多的字母:给出一段英文连续的英文字符窜,找出重复出现次数最多的字母。
思路:统计字符串中每个字母出现的次数,输出出现次数最多的字母
var func = function(str) {
//统计每个字母出现的次数
var obj = {}
for (let i =0; i < str.length; i++) {
if (!obj[str.charAt(i)]) {
obj[str.charAt(i)] = 1
} else {
obj[str.charAt(i)] ++
}
}
// obj 对象的key值是字符名,value是出现次数
// 找出value最大的key并输出就可以了
var max = 0, zifu
for (keyValue in obj) {
if (obj[keyValue] > max) {
max = obj[keyValue]
zifu = keyValue
}
}
return zifu
}
找出下列正数组的最大差值
例子:
输入 [10,5,11,7,8,9]
输出 6
思路:二重循环遍历,每个数都互相作差,取差最大的输出
var func = function(arr) {
var sum = 0
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (arr[i] - arr[j] > sum) {
sum = arr[i] - arr[j]
}
}
}
return sum
}
斐波那契数列:1、1、2、3、5、8、13、21。输入n,输出数列中第n位数的值。
var func = function(n) {
var arr = [1, 1]
for (let i = 1; i < n; i++) {
arr.push(arr[i-1] + arr[i])
}
return arr[n-1]
}
数组去重
var func = function(arr, key) {
// 普通数组去重
if (!key) {
var uniArr = []
arr.map(item => {
const index = uniArr.findIndex(value => value === item)
if (index === -1) {
uniArr.push(item)
}
})
return uniArr
} else { // 对象数组根据key值去重
var uniArr = []
arr.map(item => {
const index = uniArr.findIndex(value => value[key] === item[key])
if (index === -1) {
uniArr.push(item)
}
})
return uniArr
}
}