Как лучше всего вернуть сумму массива по определенному индексу, соответствующему критерию.
Например, я хочу найти сумму каждого массива с индексом 1 со значениями, меньшими или равными 4;
a = [];
a[0] = {};
a[0].age = [3,4,8,12,1];
a[0].result = 0;
a[1] = {};
a[1].age = [5,1,3,2,10,12];
a[1].result = 0;
// Formula should return a[0].result = 5; a[1].result = 6;
Я знаю, что могу перебирать каждый массив, но задавался вопросом, есть ли более подходящий способ, поскольку в конечном итоге массивов будет намного больше;
Я бы написал функцию, которая начинается с разрезания массива на основе индекса, с которого вы хотите начать, затем фильтра , который на основе значений, наконец, использования сокращения, чтобы найти сумму.
Но простой цикл for, вероятно, будет более понятным.
Пожалуйста, рассмотрите возможность изменения вопроса «Каков наилучший способ», чтобы сосредоточиться на конкретной проблеме. Читабельна ли цель? Время исполнения? Использование памяти?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете просто получить индекс пользователя и номер сравнения и запустить цикл для массива. Я предоставляю жестко закодированные номера сравнения и индексы.
let indexNumber = 0;
let comparisonNumber = 6;
let count = 0;
let array = [1, 7, 2, 3, 12];
for (let i = indexNumber; i < array.length; i++) {
if (array[i] < comparisonNumber) {
count+= array[I];
}
}
console.info(count);
Добиться необходимого результата можно следующим способом:
const a = [{age:[3,4,8,12,1],result:0},
{age:[5,1,3,2,10,12],result:0}];
a.forEach(e=>e.result=e.age.slice(1).reduce((sum,c)=>sum+(c<=4?c:0),0));
console.info(a);Поскольку инициализированное свойство result уже существует в каждом объекте (со значением 0), вы даже можете заменить .reduce() более простым вызовом .forEach():
const a = [{age:[3,4,8,12,1],result:0},
{age:[5,1,3,2,10,12],result:0}];
a.forEach(e=>e.age.forEach((c,i)=>{if (i&&c<=4)e.result+=c}));
console.info(a);И, как предложил @DM, теперь я избегаю вызова slice() и заменяю его проверкой внутреннего индекса i.
Ну да, я мог бы. Но на самом деле я не перераспределяю массив. Я просто «беру его часть», начиная с индекса 1, и использую его для суммирования элементов, меньших или равных 4.
Вам придется просмотреть каждое значение списка, начиная с данного индекса. Таким образом, понадобится цикл, явный или нет. Таким образом, вопрос о «более подходящем способе», чем цикл, основан на недоразумении.