想要知道数组中出现次数超过数组一半的数字,首先需要知道数据中每个数字出现的次数,例子中使用了对象的特性【对象中不允许出现重复的key】所以可以将数组中的数字当成对象的key,出现的次数当成key的value。然后在去判断对象中的哪个key的value大于数组的一半,返回这个key就可以了。代码如下:
function MoreThanHalfNum_Solution(numbers)
{
    let obj = {},
        result = 0;
    numbers.forEach(el=>{
        if(el in obj){
            obj[el] += 1;
        }else{
            obj[el] = 1;
        }
    })
    for(let i in obj){
        if(obj[i] > numbers.length/2){
            result = i;
        }
    }
    return result;
    // write code here
}
上面的代码在编辑器中会报错:“Type 'string' is not assignable to type 'number'.”,虽然不影响功能,但是看着难受啊,改成下面这样就可以了
function MoreThanHalfNum_Solution(numbers)
{
    let obj = {},
        result;
    numbers.forEach(el=>{
        if(el in obj){
            obj[el] += 1;
        }else{
            obj[el] = 1;
        }
    })
    for(let i in obj){
        if(obj[i] > numbers.length/2){
            result = i;
        }
    }
    return result || 0;
    // write code here
}