我有一个包含500个对象的数组,每个对象看起来像这样:
{name: 'Hello', phone_num: '1234'}
现在我想知道每个名字有多少。所以我希望将我的数组转换为以下内容:
[{name: 'Hello', count:15}, {name:'Marc', count:5}]
所以我想考虑使用lodash
,但是看看他们的文档我还没有找到答案。
他们有一个名为countBy
的东西,但它似乎不足以解决这个问题。
任何人都可以帮助我吗?
答案 0 :(得分:10)
您可以使用groupBy()按名称对其进行分组,然后map()对每个分组的项目进行分组,以返回必要的计数和名称。
var result = _(data)
.groupBy('name')
.map((items, name) => ({ name, count: items.length }))
.value();
var data = [
{ name: 'Hello', phone_num: '1234'},
{ name: 'Hello', phone_num: '1234'},
{ name: 'Hello', phone_num: '1234'},
{ name: 'Hello', phone_num: '1234'},
{ name: 'Hello', phone_num: '1234'},
{ name: 'Hello', phone_num: '1234'},
{ name: 'Hello', phone_num: '1234'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Marc', phone_num: '5432'},
{ name: 'Sam', phone_num: '76532'},
{ name: 'Sam', phone_num: '76532'},
{ name: 'Sam', phone_num: '76532'},
{ name: 'Sam', phone_num: '76532'}
];
var result = _(data)
.groupBy('name')
.map((items, name) => ({ name, count: items.length }))
.value();
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.12.0/lodash.js"></script>
&#13;
<强>更新强>
ES5版本将是:
var result = _(data)
.groupBy('name')
.map(function(items, name) {
return { name: name, count: items.length };
}).value();
答案 1 :(得分:6)
我的版本:
var result = _(data)
.countBy('name')
.map((count, name) => ({ name, count }))
.value();
答案 2 :(得分:1)
您可以使用:
const data = [{name: 'Hello', phone:15}, {name:'Marc', phone:5}, {name: 'Hello', phone:10}];
const names = _.countBy(data, 'name');
Object.keys(names).map(x => ({name: x, count: names[x]}));
ES5代码:
var data = [{name: 'Hello', phone:15}, {name:'Marc', phone:5}, {name: 'Hello', phone:10}];
var names = _.countBy(data, 'name');
Object.keys(names).map(function(x) {
return {
name: x,
count: names[x]
};
});
然后你可以将Object.keys
调用的返回分配给var或用它做任何你需要的事情