Вы можете использовать Array.reduce
Из документов,
Метод Reduce () выполняет функцию редуктора (которую вы предоставляете) для каждого членамассива, приводящего к единственному выходному значению.
Возвращаемое значение вашей функции редуктора присваивается аккумулятору, значение которого запоминается на каждой итерации в массиве и в конечном итоге становится окончательным, единственным результирующим значением.
ОБЪЯСНЕНИЕ
Как вы теперь знаете, функция Reduce сведет массив в одно значение, которое здесь будет суммой всех соответствующих видов ,По умолчанию сумма равна 0
.При повторении мы проверяем виды объектов по переданному значению вида в функции.Если значение совпадает, добавьте к сумме его значение how_many .
ES6
let list = [{"date":"09/09/18","how_many":11,"species":"XXXXX"},{"date":"04/11/17","how_many":41,"species":"TTTTTT"},{"date":"17/03/18","how_many":30,"species":"DDDDDDDD"},{"date":"17/08/18","how_many":31,"species":"XXXXX"}];
function findOccurences(str, arr) {
return arr.reduce((a,c) => a + (c.species === str ? c.how_many : 0), 0);
}
console.log(findOccurences("XXXXX", list));
ES5
let list = [{"date":"09/09/18","how_many":11,"species":"XXXXX"},{"date":"04/11/17","how_many":41,"species":"TTTTTT"},{"date":"17/03/18","how_many":30,"species":"DDDDDDDD"},{"date":"17/08/18","how_many":31,"species":"XXXXX"}];
function findOccurences(str, arr) {
// Here a - accumulator and c - current value
return arr.reduce(function(a, c){
// If the species of object is same as passed value (str), add it to total sum
if(c.species === str) {
a += c.how_many;
}
return a;
}, 0);
}
console.log(findOccurences("XXXXX", list));