找出字符串出现最多次数的字符

JS 中一些数组,字符串相关的常用方法,扁平化数组,计算数组中某个值出现的次数等…

eg(例如): 给定字符串

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var str = "sakfjksdjffffffff";

function getMostFrequenceLetter(str) {
var i = 0,
len = str.length,
dict = {},
list = [];
for (; i < len; i++) {
var c = str[i]; //char
dict[c] = dict[c] ? dict[c] + 1 : 1;
list[dict[c]] = c;
}

return list.slice(-1);
}

getMostFrequenceLetter(str);

图片悬浮提示效果

计算数组中某个值出现的次数

1
2
3
const countOccur = (arr, val) => arr.reduce((a, v) => (v === val ? ++a : a), 0);

console.log("result", countOccur([1, 2, 3, 4, 5, 1, 5, 5], 1)); //2

扁平化多维数组

1
2
3
4
5
6
7
8
const deepFlatten = (arr) =>
[].concat(...arr.map((v) => (Array.isArray(v) ? deepFlatten(v) : v)));
// console.log('result',[1,[2],[[3],4],[6,[7,[8,9]]],5]);
console.log("result", deepFlatten([1, [2], [[3], 4], [6, [7, [8, 9]]], 5]));
console.log(
"result 22",
[1, [2], [[3], 4], [6, [7, [8, 9]]], 5].flat(Infinity)
);

类数组(Array-like) 对象

举个 🌰:

1
2
3
4
function list() {
return Array.prototype.slice.call(arguments);
}
var list1 = list(1, 2, 3); // [1,2,3]

除了使用Array.prototype.slice.call(arguments),你也可以简单的使用[].slice.call(arguments)来代替.另外,你可以使用bind来简化该过程.

1
2
3
4
5
6
7
8
var unboundSlice = Array.prototype.slice;
var slice = Function.prototype.call.bind(unboundSlice);

function list() {
return slice(arguments);
}

var list1 = list(1, 2, 3); // [1, 2, 3]