坚持创建一个将返回对象的函数

时间:2016-02-24 19:40:52

标签: javascript

嗨,我想知道我是否可以在这里得到一些帮助。我正在尝试创建一个直方图函数,它采用类似['a','a','b','c','b','a']的数组并返回{a:3,b:2,c :1}使用reduce函数构建直方图函数。但我仍然坚持回调函数应该是什么。

感谢您的回复。

2 个答案:

答案 0 :(得分:3)

尝试迭代数组并相应地填充/递增对象的值

var x = ['a', 'a', 'b', 'c', 'b', 'a'];
var y = {};

x.forEach(function(itm){
 y[itm] = ++y[itm] || 1;
});

答案 1 :(得分:3)

您可以像这样减少数组:

['a', 'a', 'b', 'c', 'b', 'a'].reduce(function(obj, value) {
    obj[value] = obj[value] || 0;
    obj[value]++;
    return obj; 
}, {});

如果您的环境支持Object.assign()和ES6,您也可以这样做:

['a', 'a', 'b', 'c', 'b', 'a']
    .reduce((a, b) => Object.assign(a, {[b]: a[b] ? ++a[b] : 1}), {});