我有以下数组:
var arr = ['a', 'b', 'a', 'c', 'a', 'b'];
如何从阵列中获得最受欢迎的作品?
arr.getPopular() // 'a'
有人能解释我如何实现这个目标吗? 我试图转换为对象http://jsbin.com/repokasati/edit?html,js,console,output,并且有类似
的内容var obj = {
a: 3,
b: 1,
c: 0,
d: 0
}
如何从obj获得具有最大价值的密钥?
答案 0 :(得分:2)
这是Array#reduce()
的解决方案。它也返回相同的引用:
var arr = ['a', 'b', 'a', 'c', 'a', 'b', 'b'],
count = function (array) {
var o = {};
array.forEach(function (a) {
o[a] = (o[a] || 0) + 1;
});
return o;
}(arr),
max = function (o) {
var keys = Object.keys(o);
return keys.reduce(function (r, k) {
if (o[k] > o[r[0]]) {
return [k];
}
if (o[k] === o[r[0]]) {
r.push(k);
}
return r;
}, [keys.shift()]);
}(count);
document.write('<pre>' + JSON.stringify(count, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(max, 0, 4) + '</pre>');
答案 1 :(得分:0)
你可以使用Jquery $ .each函数迭代键和值对并获得具有最高值的键.Below是相同的代码
var obj = {
a: 3,
b: 1,
c: 0,
d: 0
}
var base=0;
$.each(obj,function(key,value)
{
{
if(value>base)
high=key;
base=value;
}});
console.log(high);
high将给出具有最高值的键的值