Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Return (не удается правильно вернуть значение...) (https://javascript.ru/forum/misc/24895-return-ne-udaetsya-pravilno-vernut-znachenie.html)

Mike_Kharkov 18.01.2012 06:32

Return (не удается правильно вернуть значение...)
 
Здравствуйте!
Я новичёк в js и изучая уроки Попова решил сделать задание к его уроку:
"Напишите функцию, которая получает в качестве параметра массив и перебирает
его на предмет преобразования строк, начинающихся с числа в обычные числа.
В результате работы функции, массив должен изменить свои значения на полностью числовые.

Массив для задания:

var myArray = ["100 попугаев", "201 рубль", "624 доллара", "109 кроликов", "33 весельчака", "62 кабана"];"

Моё решение:
function z(param1){

for (var i=0; i < param1.length; i++) {
	param1[i] = parseInt(param1[i]);
    document.write(param1[i] + "<br/>");
}

}

var myArray = ["100 попугаев", "201 рубль", "624 доллара", "109 кроликов", "33 весельчака", "62 кабана"];

z(myArray);

Для себя хотел попробовать видоизменить его и за место document.write прописать: return param1[i]; Но в результате(если вывести на экран функцию) выводится только первый элемент массива(100) и больше ничего!?
В чём моя ошибка?
И ещё вопрос: как в данном случае сделать так что бы - то что выводится при помощи: document.write, выводилось с помощью alert();?
(имею ввиду все 6 элементов массива в виде цифр...)
P.S. Искал ответ по поводу Return в разделе учебник на этом сайте - но ответа на свой вопрос не нашел...(хотя не исключаю того что я что то упустил!)
Буду благодарен за любую подсказку по данным вопросам!

melky 18.01.2012 06:56

Цитата:

Сообщение от Mike_Kharkov (Сообщение 151182)
Но в результате(если вывести на экран функцию) выводится только первый элемент массива(100) и больше ничего!?
В чём моя ошибка?

потому что функция возвращает результат и заканчивает выполнение. всё верно.
Цитата:

Сообщение от Mike_Kharkov (Сообщение 151182)
И ещё вопрос: как в данном случае сделать так что бы - то что выводится при помощи: document.write, выводилось с помощью alert();?

дело вкуса. но в задаче про вывод вообще ничего не сказано.
Цитата:

Сообщение от Mike_Kharkov (Сообщение 151182)
(имею ввиду все 6 элементов массива в виде цифр...)
P.S. Искал ответ по поводу Return в разделе учебник на этом сайте - но ответа на свой вопрос не нашел...(хотя не исключаю того что я что то упустил!)

вам нужно вернуть массив. либо возвращайте новый, либо изменяйте старый!

Mike_Kharkov 18.01.2012 07:14

По поводу Alert(); я имел ввиду то что, если прописать его прямо вместо document.write - то он срабатывает 6-ть раз для каждого элемента!?
Хотелось понять как вывести всё в одним Alert();?
Пробовал также возвращать(хотя не могу понять зачем?) массив - но фаербаг выдаёт ошибку...
P.S. Но всё равно большое спасибо вам за помощь!

рони 18.01.2012 09:39

Mike_Kharkov,
<!DOCTYPE html >
<html>
<head>
  <title></title>
</head>

<body>
<script  type="text/javascript">
function z(param1){

for (var i=0; i < param1.length; i++) {
	param1[i] = parseInt(param1[i],10);
}
return  param1

}
var myArray = ["100 попугаев", "201 рубль", "624 доллара", "109 кроликов", "33 весельчака", "62 кабана"];
document.write(z(myArray).join('<br />'))
</script>
</body>
</html>

Mike_Kharkov 18.01.2012 20:30

Цитата:

Сообщение от рони (Сообщение 151195)
Mike_Kharkov,
<!DOCTYPE html >
<html>
<head>
  <title></title>
</head>

<body>
<script  type="text/javascript">
function z(param1){

for (var i=0; i < param1.length; i++) {
	param1[i] = parseInt(param1[i],10);
}
return  param1

}
var myArray = ["100 попугаев", "201 рубль", "624 доллара", "109 кроликов", "33 весельчака", "62 кабана"];
document.write(z(myArray).join('<br />'))
</script>
</body>
</html>

Хотел разобратся что же значит второй параметр в parseInt и в учебнике на сайте нашел следующее:
"Если вы хотите быть уверенным, что число, начинающееся с нуля, будет интерпретировано верно - используйте второй необязательный аргумент parseInt - основание системы счисления:

1 alert( parseInt('010', 10) ); // во всех браузерах 10"
P.S. Так и не понял как конкретно действует 2-ой параметр?
+ если вместо document.write прописать alert(); - то тег <br/> игнорируется?
Не подскажите как решить эту ситуацию?

рони 18.01.2012 20:41

Mike_Kharkov,
alert(z(myArray).join('\n'))

Mike_Kharkov 18.01.2012 21:06

Спасибо за ответы!
Очень вам благодарен...


Часовой пояс GMT +3, время: 11:49.