Добавить числа в объект в массиве JavasScript из индекса ниже значения и возвращаемого значения

Как лучше всего вернуть сумму массива по определенному индексу, соответствующему критерию.

Например, я хочу найти сумму каждого массива с индексом 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;

Я знаю, что могу перебирать каждый массив, но задавался вопросом, есть ли более подходящий способ, поскольку в конечном итоге массивов будет намного больше;

Вам придется просмотреть каждое значение списка, начиная с данного индекса. Таким образом, понадобится цикл, явный или нет. Таким образом, вопрос о «более подходящем способе», чем цикл, основан на недоразумении.

trincot 28.06.2024 21:22

Но простой цикл for, вероятно, будет более понятным.

Barmar 28.06.2024 22:53

Пожалуйста, рассмотрите возможность изменения вопроса «Каков наилучший способ», чтобы сосредоточиться на конкретной проблеме. Читабельна ли цель? Время исполнения? Использование памяти?

D M 28.06.2024 23:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете просто получить индекс пользователя и номер сравнения и запустить цикл для массива. Я предоставляю жестко закодированные номера сравнения и индексы.

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.

Carsten Massmann 28.06.2024 22:47

Другие вопросы по теме

Похожие вопросы