Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 11.05.2022
Сообщений: 11

Вырезать и сложить элементы массива

08.09.2022, 21:39. Показов 444. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый вечер, помогите решить задачу!
Дан массив
Нужно удалить все элементы которые нельзя преобразовать к числу и сложить оставшиеся элементы. В массиве присутствует элемент "+" , тогда оставшиеся элементы нужно сложить, если элемент "-" то отнять, если "=" то сравнить
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Массив
const expression = ["25", "true", "+", "crew", 5];
 
//Функиция в которойБ я пытаюсь удалить все что нельзя преобразовать к числу и сложить оставшиеся( если expression[i] == "-" то отнимаем 
function checkElmentsOnNumber(expression) {
  for (let i = 0; i < expression.length; i++) {
    expression[0] = Number(expression[0]);
    if (Number.isFinite(expression[i]) || expression[i] == "+") {
      expression.splice();
    }
  }
}
 
checkElmentsOnNumber(expression);
P.S. метод eval() нельзя использовать по заданию
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.09.2022, 21:39
Ответы с готовыми решениями:

Сложить все элементы массива
function assa() { var a = new Array(4,2,3,6,10); var i; var sun; for(i=0;i &lt; a.length;i++) { sun = a + a; sun = sun + a; ...

Сложить попарно элементы массива, последний сложить с первым
помогите, пожалуйста, попарно сложить элементы массива x, последний элемент сложить с первым и записать результат в массив y

Два одномерных массива поэлементно сложить между собой - третий - сложить каждый элементы - вывести на экран
2 одномерных массива - сложить между собой - третий - сложить каждый элементы - вывести на экран. Помогите написать программу на...

4
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
09.09.2022, 16:37
Как-то так можно:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const expression = ["25", "true", "+", "crew", 5];
const numValues = [];
let action = null;
 
expression.forEach(item => {
  if(+item) {
    numValues.push(+item);
  }
  if(["+", "-", "="].some(actionType => actionType === item)) {
    action = item;
  }
})
 
switch(action) {
  case "=":
    console.log(numValues[0] === numValues[1]);
    break;
  case "+":
    console.log(numValues[0] + numValues[1]);
    break;
  case "-":
    console.log(numValues[0] - numValues[1]);
    break;
}
Если числовых значений больше двух непонятно как сравнивать...
А в вашем цикле надо учитывать, что при удалении будет смещение массива. Поэтому итератор надо уменьшать.
0
0 / 0 / 0
Регистрация: 11.05.2022
Сообщений: 11
09.09.2022, 20:28  [ТС]
У меня вот так получилось реализовать, но это если элемент "+"

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
expression[0] = Number(expression[0]);
let plusSymbol = expression.some((symbol) => {
  return symbol == "+";
});
let result = 0;
if (plusSymbol) {
  expression.map((element) => {
    if (Number.isFinite(element)) {
      delete element;
      result += element;
    }
  });
  console.log(result);
Если элемент с "-" то получается что, resultReduce будет - 30, т.к. по дефолту он имеет значение 0, при первой итерации получается выражение 0 - 25, получается -25 , а -25 - 5 будет -30
JavaScript
1
2
3
4
5
6
7
8
9
10
let resultReduce = 0;
if (reduceSymbol) {
  expression.map((element, index) => {
    if (Number.isFinite(element)) {
      delete element;
      resultReduce /= element;
    }
  });
  console.log(resultReduce);
}
0
261 / 111 / 53
Регистрация: 22.01.2017
Сообщений: 448
09.09.2022, 22:44
mazanyCech, не очень понятно что в первом варианте, что во втором.
В любом случае одним циклом не обойтись. Первый цикл очищает и находит тип операции. Второй цикл выполняет операцию.
В случае если всего 2 числа, то второй цикл не нужен. Мой предложенный вариант switch подойдет.
1
0 / 0 / 0
Регистрация: 11.05.2022
Сообщений: 11
09.09.2022, 22:53  [ТС]
Хорошо, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.09.2022, 22:53
Помогаю со студенческими работами здесь

Сложить элементы массива
у меня проблемы с практической частью из-за этого спрашиваю получается я пишу #include&lt;...&gt; потом int...

Сложить элементы массива
Есть такой код. Нужно Сууму вынести как отдельную функцию, Вызвать её, ну и ответ #include &lt;iostream&gt; using namespace std; int...

Сложить элементы массива
вот у меня такая проблема.. с клавиатуры вводится число. оно определяет, сколько элементов будет в массиве. с клавиатуры вводятся...

Сложить элементы массива
Всем доброго времени суток. У меня такая проблема. Есть таблица из 5 элементов. Нужно их суммировать между собой. Допустим {1,3,5,7,9} =...

Сложить все элементы массива А с элементами массива В
3. Даны массивы А и В. Сложить все элементы массива А с элементами массива В. Результат записать в массив SumAB. Вывести на экран массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru