Как получить результат работы цикла в виде массива.
Подскажите пожалуйста, возможно ли получить результат всех итераций цикла 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] |
Tungus,
massive.push(x,d); засунь внутрь оператора while, после вычислений... Цитата:
|
Зачем 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; } |
Спасибо за помощь
Спасибо большое. А проверка, это потому эта функция используется в более длинном скрипте, она нужна там сложная математика.
|
Ой Ой действительно получился цикл:
Вид цикла [x1, d1,x2,d2,........ xn,dn]- если честно меня это обрадовало. А как получить [x1,d1],[x2,d2],....[xn,dn] Это возможно? |
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; } |
Цитата:
http://slovari.yandex.ru/array/en-ru/informatics |
Спасибо
|
Еще раз большое спасибо!
Еще один вопрос. Возможно ли полученный массив вида [[x1,d1],[x2,d2],.....[xn,dn]] преобразовать в xd1=[x1,d1]; xd2=[x2,d2]; ................. xdn=[xn,dn] Я перечел все, что касается операторов для массивов и не смог решить. |
Можно, но не нужно. Если у вас в коде есть переменные с цифренным индикатором, то с великой вероятностью это говнокод. Массивы именно для таких задач и существуют. Работайте напрямую с массивом.
|
Что за зверь -"переменные с цифренным индикатором" ?
|
Цитата:
xd1 xd2 ... xdn |
На самом деле можно переименовать любую переменную. Массив у меня обозван massive, о получается он в результате работы цикла. Я просто не нашел решения для своей задачи.
"Еще один вопрос. Возможно ли полученный массив вида [[x1,d1],[x2,d2],.....[xn,dn]] преобразовать в xd1=[x1,d1]; xd2=[x2,d2]; ................. xdn=[xn,dn] Я перечел все, что касается операторов для массивов и не смог решить." Не понимаю как разбить массив из двумерного во множество одномерных. Ведь в реальности в [x1,d1] и x1 и d1 это числа. Если просто преобразовать массив massive =[[x,d],[a,b],.....[c,h]], (количество одномерных массивов при работе скрипта может быть разное) в massive ={[x,d],[a,b],.....[c,h]} было бы нормально для моей задачи. |
Цитата:
Цитата:
|
:yes:
|
Я правильно понял, что эта задача не решаема?
|
Tungus,
Возможно всё, нужно только желание и настойчивость(мне лично лень вникать в эту задачу) Как то пытался решать задачу загрузки картинок с произвольного домена через стандартную форму и input type="file"; Через полгода рытья доков и идей - решил |
Цитата:
x1=1 x2=2 d1=1 d2=2 arr=[, [x1,d1],[x2,d2]] for(i=0; i<=arr.length; i++){window["xd"+i]=arr[i]} console.log( xd1, xd2 ) // [ 1, 1 ] [ 2, 2 ] Но в общем случае -- нет. У тебя в массиве нет никаких имен, только значения. Чтобы сделать как ты хочешь, надо массив заполнять не переменными, а строками |
Если не трудно несколько разъяснений :
Массив у меня получен в результате работы цикла while. Я объявил его перед циклом arr=[], теперь мне объявить его arr=[,]? Я получаю его arr.push([x,d]) Количество [x,d]- будет меняться при каждом выполнении скрипта, в зависимости от количества итераций. Тогда под console.log как написать? |
Tungus,
Тебе проще не трахаться, а начинать нумерацию с нуля x0=0 x1=1 d0=0 d1=1 arr=[[x0,d0],[x1,d1]] for(i=0; i<=arr.length; ++i){window["xd"+i]=arr[i]} console.log( xd0, xd1 ) // [ 0, 0 ] [ 1, 1 ] |
Блин зараза, не получается получить это дело из под цикла.
Возможно зайти с заднего прохода: Разбить массив [a,b,c,d,.........n] на [a,b],[c,d],...........[x,n]? |
Цитата:
function calculate(data){ var massive = []; var calc = {}; try { var x = data[0] ||0; var y = data[1] ||0; var z = data[2] ||0; 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; } } Если не так - вынесите var massive = []; за функцию и обнуляйте при первом вызове итераций |
Нашел более простой способ решения свой именно задачи, щасссссс спробую
|
Deff, я применил слово "цифренный" по аналогии с "буквенный", ибо слово цифровой нынче зарезервировано.:)
Tungus, ещё раз: что тебе мешает использовать массив по его прямому назначению? Зачем тебе обязательно создавать 100500 бессмысленных переменных? |
Да на самом деле все же приходит с опытом. Почитал спецификацию, пошарил. И получил нужный мне результат. Это получилось так:
function calculate(data){ var calc = {}; try { var x = data[0] ||0; var y = data[1] ||0; var z = data[2] ||0; var massiveTable = [["CENTER", "CENTER"], ["CENTER", "CENTER"]] var massive = []; if (x+y+z==0) return calc; while((y-x)>z){ x+=z; d=(x*Math.PI).toFixed(2); massive.push([x,d]); } massive.splice(0, 0, massiveTable); calc ['_massive_']=massive console.log(massive); return massive; } catch(err){ return calc; } } |
Цитата:
|
Я что-то пропустил? Зачем у него try/catch?
И сколько вас таких. Одному уже кидал ссылку на перевод massive/array. Это болезнь какая-то заразная что-ли? |
Ну с днем рождения , и всего хорошего через край что бы :)
|
На счет try/catch писал выше. А по остальному- я болен
|
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 09:23. |