以下仅适用于数据很小的情况,数据量大的情况下可能内存不够,计算时间也会很长
// min || max 元素长度可能都大于一
var arr = ['a', 'a', 'a', 'b', 'b', 'a', 'b', 'a', 'c', 'a', 'b', 'a', 'b', 'd']
var obj ={}
for (var i =0; i < arr.length; i++) {
obj[arr[i]] = arr[i]
}
Object.keys(obj).forEach(item => obj[item]= arr.filter(e => e === obj[item]).length)
var nums = Object.keys(obj).map(e => obj[e])
var max = Math.max.call(null, nums.reduce((prev, next) => prev > next ? prev : next))
var min = Math.min.call(null, nums.reduce((prev, next) => prev < next ? prev : next))
var maxItem = Object.keys(obj).filter(e => obj[e] === max)
var minItem = Object.keys(obj).filter(e => obj[e] === min)
console.log(minItem)
console.log(maxItem)
// console.log(obj)
// console.log(max)
// console.log(min)
var arr = ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c', 'd', 'e', 'd', 'f']
var obj = {}
for(var i = 0; i < arr.length; i++){
if(obj.hasOwnProperty(arr[i]))
obj[arr[i]] = ++obj[arr[i]]
else
obj[arr[i]] = 1
}
var max = Math.max.call(null, Object.values(obj).reduce((prev, next) => prev > next ? prev : next))
var min = Math.min.call(null, Object.values(obj).reduce((prev, next) => prev < next ? prev : next))
var maxItem = Object.keys(obj).filter(item => obj[item] === max)
var minItem = Object.keys(obj).filter(item => obj[item] === min)
console.log(obj)
console.log(max, min)
console.log(maxItem, minItem)