Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 11.01.2015, 23:32
Интересующийся
Посмотреть профиль Найти все сообщения от dkstra
 
Регистрация: 11.01.2015
Сообщений: 11

Сообщение от bes
потому как влом искать
не надо ничего искать, надо понимать как работает, этого достаточно, чтобы не посадить производительность.
Ответить с цитированием
  #12 (permalink)  
Старый 11.01.2015, 23:33
Интересующийся
Посмотреть профиль Найти все сообщения от dkstra
 
Регистрация: 11.01.2015
Сообщений: 11

Сообщение от bes
тем более есть алтернативные варианты
Ага, тонны говнокода и лапши
Ответить с цитированием
  #13 (permalink)  
Старый 12.01.2015, 00:03
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dkstra
не надо ничего искать, надо понимать как работает, этого достаточно, чтобы не посадить производительность.
я про то и говорил - не хочу даже вникать, нет eval - нечего вклинить, даже, если и так нечего вклинить, вникнуть можно - никто не спорит, говорить на простых случаях особого смысла нет
насчёт производительности - приводи бенчмарк

Сообщение от dkstra
Ага, тонны говнокода и лапши
ну расскажи поподробнее, может в тех 3 строчках действительно говнокод
Ответить с цитированием
  #14 (permalink)  
Старый 12.01.2015, 00:04
Интересующийся
Посмотреть профиль Найти все сообщения от dkstra
 
Регистрация: 11.01.2015
Сообщений: 11

Сообщение от bes
ну расскажи поподробнее, может в тех 3 строчках действительно говнокод
в каких 3-х строчках?
Ответить с цитированием
  #15 (permalink)  
Старый 12.01.2015, 00:05
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dkstra
в каких 3-х строчках?
в альтернативных вариантах, которые привели до твоего
Ответить с цитированием
  #16 (permalink)  
Старый 12.01.2015, 00:08
Интересующийся
Посмотреть профиль Найти все сообщения от dkstra
 
Регистрация: 11.01.2015
Сообщений: 11

Сообщение от bes
в альтернативных вариантах, которые привели до твоего
Да это убожество вообще. Чтобы реализовать только лишь(!) операцию сложения там наговняли кучу кода. А ты напиши, и убедись, как это будет выглядеть хотя бы на 4-х, как в моем втором примере.
Ответить с цитированием
  #17 (permalink)  
Старый 12.01.2015, 01:02
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dkstra
Да это убожество вообще. Чтобы реализовать только лишь(!) операцию сложения там наговняли кучу кода. А ты напиши, и убедись, как это будет выглядеть хотя бы на 4-х, как в моем втором примере.
с учётом кривоватой регулярки, примерно так
function calc(op1, op, op2){
	var res,
		op1 = +op1;
		op2 = +op2;
	switch ( op ) {
		case "+": res = op1 + op2; break;
		case "-": res = op1 - op2; break;
		case "*": res = op1 * op2; break;
		case "/": res = op1 / op2; break;
	}
	return res;
}

var mas = "example 5-15 =twenty, example 5+15 =twenty, example 15/5 =twenty, example 5*15 =twenty".split(",");
var res = mas.map(function (value) {
	return value.replace(/.*?(\d+)(.*?)(\d+).*/, function (str, p1, p2, p3) {
		return calc(p1, p2, p3);
	});
});
alert(res);
Ответить с цитированием
  #18 (permalink)  
Старый 12.01.2015, 01:25
Интересующийся
Посмотреть профиль Найти все сообщения от dkstra
 
Регистрация: 11.01.2015
Сообщений: 11

bes,
Это не эквивалентный код
"example 5-0+5 =twenty, example 5+15 =twenty, example 15/5 =twenty, example 5*15 =twenty"

.split(",")
.forEach(function(str){
   alert(eval(str.replace(/[^\d+*/-]/g, "")))
})


function calc(op1, op, op2){
    var res,
        op1 = +op1;
        op2 = +op2;
    switch ( op ) {
        case "+": res = op1 + op2; break;
        case "-": res = op1 - op2; break;
        case "*": res = op1 * op2; break;
        case "/": res = op1 / op2; break;
    }
    return res;
}
 
var mas = "example 5-0+5 =twenty, example 5+15 =twenty, example 15/5 =twenty, example 5*15 =twenty".split(",");

var res = mas.map(function (value) {
    return value.replace(/.*?(\d+)(.*?)(\d+).*/, function (str, p1, p2, p3) {
        return calc(p1, p2, p3);
    });
});
alert(res);


//>>>> 10
//>>>> 20
//>>>> 3
//>>>> 75
//>>>> [ '5', '20', '3', '75' ]


Да и вообще, одного взгляда на два варианта должно быть достаточно, чо ты тужишься, я хз.
Ответить с цитированием
  #19 (permalink)  
Старый 12.01.2015, 02:16
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

bes,
function calc(arr) {
    var a = +arr[1],
      b = +arr[3];
    return {
      '+': a + b,
      '-': a - b,
      '*': a * b,
      '/': a / b
    }
    [arr[2]];
  }
  var mas = "example 5-15 =twenty, example 5+15 =twenty, example 15/5 =twenty, example 5*15 =twenty".split(",");
  for (var i = 0; i < mas.length; i++) {
    alert(calc(/.*?(\d+)(.)(\d+)/.exec(mas[i])));
  }
Ответить с цитированием
  #20 (permalink)  
Старый 12.01.2015, 18:25
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от dkstra
bes,
Это не эквивалентный код
Сообщение от dkstra
Да и вообще, одного взгляда на два варианта должно быть достаточно, чо ты тужишься, я хз.
нет, ты просто придумываешь задачи на ходу
я к тому что не такой уж страшный получился чёрткод, как ты его малевал
идея была в том, чтобы юзать eval только в крайних случаях, и это был ответ на твой вопрос, почему никто не сэвалил, юзать или не юзать - каждый выбирает сам
попробуй лучше решить свою последнюю задачу без eval
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование сложной строки в число Basil_JS Events/DOM/Window 3 05.09.2014 08:16
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13
Как запретить отмену выделения текста от клика мышью? Маэстро Internet Explorer 0 03.04.2012 21:21
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02
Получение позиции текста по координатам traa Events/DOM/Window 20 08.02.2011 14:19