Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2014, 11:14
Интересующийся
Отправить личное сообщение для Tungus Посмотреть профиль Найти все сообщения от Tungus
 
Регистрация: 19.02.2014
Сообщений: 16

Как получить результат работы цикла в виде массива.
Подскажите пожалуйста, возможно ли получить результат всех итераций цикла while в виде массива?
Ниже привожу скрипт.
function calculate(data){
 var calc = {};
 try {
      
      var x = data[0] ||0;
      var y = data[1] ||0;
      var z = data[2] ||0;
      var massive = [];
      if (x+y+z==0)
        return calc;
      while((y-x)>z){
         x+=z;
         d=x*3,14;
     }
         massive.push(x,d);
     console.log(massive);
     return massive;
  }
  catch(err){
    return calc;
  }
}


В результате получил в виде массива лишь последнюю итерацию. А хотелось бы получить все.
итерация 1 [x1,d1]
итерация 2 [x2,d2]
..................
итерация n [xn,dn]
Ответить с цитированием
  #2 (permalink)  
Старый 06.12.2014, 11:22
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Tungus,
massive.push(x,d); засунь внутрь оператора while, после вычислений...

Сообщение от Tungus
d=x*3,14;
А так же числа с плавающей точкой пишутся через точку а не запятую... И вообще я так понимаю это число PI тогда нужно: d=x*Math.PI;
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 06.12.2014, 12:50
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Зачем try-catch?

function calculate(data) {
    var d,
        x = data[0] || 0,
        y = data[1] || 0,
        z = data[2] || 0,
        massive = [];
    if(x + y + z == 0) return {};
    while(y - x > z) {
        x += z;
        massive.push(x, x * Math.PI);
    }
    return massive;
}
Ответить с цитированием
  #4 (permalink)  
Старый 06.12.2014, 13:11
Интересующийся
Отправить личное сообщение для Tungus Посмотреть профиль Найти все сообщения от Tungus
 
Регистрация: 19.02.2014
Сообщений: 16

Спасибо за помощь
Спасибо большое. А проверка, это потому эта функция используется в более длинном скрипте, она нужна там сложная математика.
Ответить с цитированием
  #5 (permalink)  
Старый 06.12.2014, 13:30
Интересующийся
Отправить личное сообщение для Tungus Посмотреть профиль Найти все сообщения от Tungus
 
Регистрация: 19.02.2014
Сообщений: 16

Ой Ой действительно получился цикл:
Вид цикла [x1, d1,x2,d2,........ xn,dn]- если честно меня это обрадовало.
А как получить [x1,d1],[x2,d2],....[xn,dn]
Это возможно?
Ответить с цитированием
  #6 (permalink)  
Старый 06.12.2014, 13:48
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

function calculate(data) {
    var d,
        x = data[0] || 0,
        y = data[1] || 0,
        z = data[2] || 0,
        massive = [];
    if(x + y + z == 0) return {};
    while(y - x > z) {
        x += z;
        massive.push([x, x * Math.PI]);
    }
    return massive;
}
Ответить с цитированием
  #7 (permalink)  
Старый 06.12.2014, 14:33
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Tungus
massive
http://slovari.yandex.ru/massive/en/
http://slovari.yandex.ru/array/en-ru/informatics
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #8 (permalink)  
Старый 06.12.2014, 20:46
Интересующийся
Отправить личное сообщение для Tungus Посмотреть профиль Найти все сообщения от Tungus
 
Регистрация: 19.02.2014
Сообщений: 16

Спасибо
Ответить с цитированием
  #9 (permalink)  
Старый 08.12.2014, 07:26
Интересующийся
Отправить личное сообщение для Tungus Посмотреть профиль Найти все сообщения от Tungus
 
Регистрация: 19.02.2014
Сообщений: 16

Еще раз большое спасибо!
Еще один вопрос. Возможно ли полученный массив вида [[x1,d1],[x2,d2],.....[xn,dn]] преобразовать в
xd1=[x1,d1];
xd2=[x2,d2];
.................
xdn=[xn,dn]

Я перечел все, что касается операторов для массивов и не смог решить.
Ответить с цитированием
  #10 (permalink)  
Старый 08.12.2014, 08:17
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Можно, но не нужно. Если у вас в коде есть переменные с цифренным индикатором, то с великой вероятностью это говнокод. Массивы именно для таких задач и существуют. Работайте напрямую с массивом.
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить количество дней до определенной даты beard Общие вопросы Javascript 3 24.06.2012 17:22
Объясните пожалуйста как обратится к функции и получить результат zeraid AJAX и COMET 4 03.04.2011 14:55
как получить результат умножения b и e vmtiu Элементы интерфейса 5 27.11.2009 19:20
Как переместить результат работы скрипта? Vlaimir Events/DOM/Window 2 31.08.2009 13:52
Подскажите, пжлст, как вывести в тот же документ результат ф-ции? LexXxeL Элементы интерфейса 4 13.05.2009 13:26