Хитрый подсчет в массиве
Добрый день! Хочу уточнить, имеется ли простое решение у след. задачи. Есть массив:
var arr = []; arr [0] = "1 + 2 "; arr [1] = "3* 2 "; arr [2] = "2+5 "; arr [3] = "1 +2"; Там разное количество пробелов, их надо сохранить. Можно ли получить массив такого вида: arr [0] = "1 + 2 =3"; arr [1] = "3* 2 =6"; arr [2] = "2+5 =7"; arr [3] = "1 +2=3"; Т.е. посчитать и написать результат после равно, не используя кучу дополнительных действий. Что-то у меня получается уж очень громоздко. Спасибо! |
var arr = []; arr [0] = "1 + 2 "; arr [1] = "3* 2 "; arr [2] = "2+5 "; arr [3] = "1 +2"; var newArr = arr.map(str => `${str}=${eval(str)}`); alert(newArr); |
Цитата:
|
|
Цитата:
|
Цитата:
arr [4] = "3 ^2"; Тут же, как минимум, нужно запустить метод Math.pow(3,2) как тут можно модифицировать Ваш код? |
Zmicer,
var arr = []; arr [0] = "1 + 2 "; arr [1] = "3 ^2 "; arr [2] = "2+5 "; arr [3] = "1 +2"; var newArr = arr.map(str => `${str}=${eval(str.replace('^', '**'))}`); alert(newArr); |
Как просто:)
|
Цитата:
arr [5] = "12 #2"; вычисление наибольшего общего делителя? |
Zmicer,
математика ограничивается модулем Math :( Выбирай что-то из этого https://developer.mozilla.org/ru/doc...etic_Operators |
Цитата:
А можно ли в модуль Math добавить свой метод, в рамках одного сеанса работы или стоит пойти другим путем? |
Цитата:
eval понимает только то, что есть в языке js с ^ повезло - просто заменили **. А если бы не было **, то по простому не получилось бы. вот этот твой # - для него нет аналогичной операции. Можно реализовать соответствующую функцию, но вот так запросто поменять в строке # на вызов этой функции не получится. Дело пахнет парсингом, в общем ) |
var arr = []; arr [0] = "1 + 2 "; arr [1] = "3* 2 "; arr [2] = "2+5 "; arr [3] = "1 +2"; arr = arr.map(item => item+"="+eval(item)); |
NeoN,
пост №2 |
просто скинул свой вариант
|
Часовой пояс GMT +3, время: 01:05. |