Решил немного оптимизировать + унифицировать решение предложенное @mourr
function countFieldPersent(arr, field) {
var data = arr.reduce((r, item) => {
var value = String(item[field]);
if(typeof r[value] === 'undefined') {
r[value] = 0;
}
return ++r[value], r;
}, {});
return Object.getOwnPropertyNames(data).map(label => ({
label,
value : (data[label] * 100) / arr.length
}));
}
var arr = [{ FirstName: 'Pavel', LastName: 'Pavlol', Phone: '1234567', Gender:'male' },
{ FirstName: 'Ivan', LastName: 'Ivanov', Phone: '1234567', Gender:'female' }];
var result = countFieldPersent(arr, 'Gender');
Правда в моем варианте значения будут сравниваться как строки, так как я их перевожу в ключи объекта data