问题描述
我不明白...为什么他在这个函数中使用 obj ,谁能解释一下它在做什么。
const yourArray = [37,32,97,35,76,62]
function equalizeArray(arr) {
let obj = {},max = 1
arr.forEach(el => {
if (obj.hasOwnProperty(el)) {
obj[el] = obj[el] + 1;
if (obj[el] > max) {
max = obj[el];
}
}
else{
obj[el] = 1
}
})
return arr.length - max
}
console.log(equalizeArray(yourArray));
解决方法
据我所知,该函数的目的是计算数组中相同值的最大数量,然后从数组的长度中减去该最大数量 (max
) 并返回该数量。
该函数使用对象 obj
将数组值存储为键,并将它们的重复计数作为这些键的值。
变量 max
跟踪最大重复次数,如果任何键的值大于 max
,它会被重新分配。
然后函数返回array.length - max
。