找出数组中出现次数最多的元素(使用 es6 与逗号运算符)
Array.prototype.getMost = function () {
    var obj = this.reduce((p, n) => (p[n]++ || (p[n] = 1), (p.max = p.max >= p[n] ? p.max : p[n]), (p.key = p.max > p[n] ? p.key : n), p), {});
    return '出现次数最多的元素为:' + obj.key + ',次数为:' + obj.max;
}
let obj = [3, 5, 6, 5, 9, 8, 10, 5, 7, 7, 10, 7, 7, 10, 10, 10, 10, 10].getMost();
console.log(obj);        // 出现次数最多的元素为:10,次数为:7
代码片段 var obj = this.reduce((p, n) => (p[n]++ || (p[n] = 1), (p.max = p.max >= p[n] ? p.max : p[n]), (p.key = p.max > p[n] ? p.key : n), p), {}); 可以看成(前提明白 es6 函数语法和 逗号操作符 ):
var obj = this.reduce(function (p, n) {
    //判断 p[n] 是否存在
    p[n] ? p[n]++ : p[n] = 1;
    //p.max 存入次数最多的次数
    p.max = p.max >= p[n] ? p.max : p[n];
    //p.key 存入次数最多的元素
    p.key = p.max > p[n] ? p.key : n;
    return p;
}, {})
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号