我有一个包含500个对象的数组,每个对象看起来像这样:
{name: 'Hello', phone_num: '1234'}
现在我希望找出每个名称的数量。因此,我希望将我的数组转换为以下内容:
[{name: 'Hello', count:15}, {name:'Marc', count:5}]
我希望使用lodash
来解决这个问题,但在查看它们的文档时,我没有找到答案。
他们有一个叫做countBy
的东西,但似乎不足以解决这个问题。
有人能帮助我吗?
我有一个包含500个对象的数组,每个对象看起来像这样:
{name: 'Hello', phone_num: '1234'}
现在我希望找出每个名称的数量。因此,我希望将我的数组转换为以下内容:
[{name: 'Hello', count:15}, {name:'Marc', count:5}]
我希望使用lodash
来解决这个问题,但在查看它们的文档时,我没有找到答案。
他们有一个叫做countBy
的东西,但似乎不足以解决这个问题。
有人能帮助我吗?
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>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.12.0/lodash.js"></script>
更新:
ES5版本为:
var result = _(data)
.groupBy('name')
.map(function(items, name) {
return { name: name, count: items.length };
}).value();
_(data)
)使用。文档中好像没有提到过。它是将js对象和数组转换为lodash对象,以便我可以链式调用函数,而不是将js对象或数组作为参数传递吗? - Wishvar result = _(data)
.countBy('name')
.map((count, name) => ({ name, count }))
.value();
你可以使用:
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
调用的返回值分配给变量或对其进行任何操作
_.countBy(your_data, 'name')
? - Alexey Ten