Цитата:
|
Цитата:
|
Цитата:
Час назад закончил собеседование со студентом магистратуры, ему объяснял те же постулаты. :( |
biben,
Оставь телефончик, цена перевозок порадовала =) |
Цитата:
Нет гарантии того, что данные будут введены отсортированными, т.е. перед тем, как гонять данные в цикле, нужно будет обязательно отсортировать их, а это в любом случае придется пробежаться по всему объекту данных (typeof []=='object'). Т.е. в этом случае нам нужно будет аж 2 раза в цикле работать с массивом данных. Что более индусский код, два раза гонять в цикле один и тот же объект или сделать это единожды? $(function(){ function count(){ var data={ 0:2, 2000:1.5, 5000:1.3, 30000:1 }, sum=+$("#count_inp").val() || 0, last_v=-999999, result=false; for(var val in data){ if(data.hasOwnProperty(val) && sum>=val && last_v<val){ result=data[val]*sum; last_v=val; }; }; $("#result p").html(result===false?'Укажите расстояние':result+' Рублей'); }; $("#process_all_b").click(count); }); |
Цитата:
Так же у массивов есть метод sort() который так же сможет нам помочь... Но ты волен остаться при своем мнении, т.к. нас не связывают производственные отношения и я тебе не босс. :) |
Цитата:
Про метод «sort» знаю, но если хранить данные в виде объекта (как я и сделал), то этому методу нужно будет передавать функцию, которая будет сортировать элементы массива. Если в кач-ве контейнеров для данных использовать 2 массива (как это сделал Джоник), то можно использовать «sort» без функции, но теряется связь «ключ-значение». Метод «sort», я считаю, в любом случае пробежится по всем элементам объекта для того, чтобы его отсортировать. Я веду с тобой диалог (спор), поскольку считаю, что в моих словах есть смысл. В споре, как известно, рождается истина. Если у тебя нет желания продолжать, то жаль конечно, но ничего не поделаешь. |
:write: вариант предложенный ksa, напомню some остановит цикл на первом правильном результате ...
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $("#process_all_b").click(function() { var d = [{ value: 30000, ratio: .8 }, { value: 5000, ratio: 1 }, { value: 2000, ratio: 1.3 }, { value: 0, ratio: 1.5 }], a = +$("#count_inp").val() || 0, b = "Укажите расстояние"; a && d.some(function(c) { return a > c.value && (b = (a * c.ratio).toFixed(2) + " Рублей") }); $("#result p").html(b) }) }); </script> </head> <body> <div id="calc_div"> <div id="quantity_div"><p class="c"> Сколько километров </p> <input type="text" id="count_inp"><br> </div> <div id="final_div"> <p class="c"><button id="process_all_b" >Посчитать</button><br></p> <div id="result"><p class="c">0 Рублей</p></div> </div> </div> </body> </html> |
Цитата:
var d = [{ value: 30000, ratio: 1 }, { value: 5000, ratio: 1.3 }, { value: 0, ratio: 2 }, { value: 2000, ratio: 1.5 }]; |
Цитата:
Свои аргументы я высказал. |
Часовой пояс GMT +3, время: 09:00. |