想要知道数组中出现次数超过数组一半的数字,首先需要知道数据中每个数字出现的次数,例子中使用了对象的特性【对象中不允许出现重复的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 }