06.12.2014, 11:14
|
Интересующийся
|
|
Регистрация: 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]
|
|
06.12.2014, 11:22
|
что-то знаю
|
|
Регистрация: 24.05.2009
Сообщений: 5,176
|
|
Tungus,
massive.push(x,d); засунь внутрь оператора while, после вычислений...
Сообщение от Tungus
|
d=x*3,14;
|
А так же числа с плавающей точкой пишутся через точку а не запятую... И вообще я так понимаю это число PI тогда нужно: d=x*Math.PI;
|
|
06.12.2014, 12:50
|
|
Профессор
|
|
Регистрация: 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;
}
|
|
06.12.2014, 13:11
|
Интересующийся
|
|
Регистрация: 19.02.2014
Сообщений: 16
|
|
Спасибо за помощь
Спасибо большое. А проверка, это потому эта функция используется в более длинном скрипте, она нужна там сложная математика.
|
|
06.12.2014, 13:30
|
Интересующийся
|
|
Регистрация: 19.02.2014
Сообщений: 16
|
|
Ой Ой действительно получился цикл:
Вид цикла [x1, d1,x2,d2,........ xn,dn]- если честно меня это обрадовало.
А как получить [x1,d1],[x2,d2],....[xn,dn]
Это возможно?
|
|
06.12.2014, 13:48
|
|
Профессор
|
|
Регистрация: 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;
}
|
|
06.12.2014, 14:33
|
|
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
__________________
В личку только с интересными предложениями
|
|
06.12.2014, 20:46
|
Интересующийся
|
|
Регистрация: 19.02.2014
Сообщений: 16
|
|
Спасибо
|
|
08.12.2014, 07:26
|
Интересующийся
|
|
Регистрация: 19.02.2014
Сообщений: 16
|
|
Еще раз большое спасибо!
Еще один вопрос. Возможно ли полученный массив вида [[x1,d1],[x2,d2],.....[xn,dn]] преобразовать в
xd1=[x1,d1];
xd2=[x2,d2];
.................
xdn=[xn,dn]
Я перечел все, что касается операторов для массивов и не смог решить.
|
|
08.12.2014, 08:17
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,590
|
|
Можно, но не нужно. Если у вас в коде есть переменные с цифренным индикатором, то с великой вероятностью это говнокод. Массивы именно для таких задач и существуют. Работайте напрямую с массивом.
__________________
29375, 35
|
|
|
|