Вход

Просмотр полной версии : Сортировка массивов (ввод через prompt)


Skriptor
08.12.2014, 05:22
Здравствуйте, сейчас более детально изучаю javascript. Но возник вопрос по массивам. В частности, как сделать так, чтобы массив сортировался после заданного пользователем количества ввода параметров (через prompt). Вообщем, не совсем понял, как представить массив как переменную, которой можно присвоить prompt и затем отсортировать...
Подскажите пожалуйста, что здесь исправить, чтобы пользователь вводил 5 чисел, которые публиковались бы отсортированными по убыванию. Что не так? Спасибо.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=window-1251">
</head>
<body>
<script language="javascript">
for (i=0; i<5; i++) {
array [i] = Number(prompt ("Введите число"));
var array = [i];
array.sort(function(a, b) { return b - a; });
document.write (array + " ");}
</script>
</body>
</html>

danik.js
08.12.2014, 06:24
array [i] = Number(prompt ("Введите число"));
var array
То есть ты сначала пытаешься заполнить массив, а только потом его создаешь? Не считаешь что должно происходить наоборот?

И массив создается так: var array = [];

krutoy
08.12.2014, 12:00
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=window-1251">
</head>
<body>
<script language="javascript">
array=[]
for (i=0; i<5; i++) {
array.push(+prompt ("Введите число"))
}
delete(i)
document.write (array.sort(function(a, b){return b-a}).join(" "));
</script>
</body>
</html>

рони
08.12.2014, 12:13
krutoy,
ну не будет же сортировать числа ваш код.

рони
08.12.2014, 12:15
krutoy,
sort() по умолчанию сортирует всё как строки

krutoy
08.12.2014, 12:19
рони,
Ну так сортирует же, что значит не будет?

krutoy
08.12.2014, 12:30
sort() по умолчанию сортирует всё как строки

И почему это он должен их сортировать как строки, если видит он их, как числа.

;[2,1,3].sort(function(x){alert(typeof x)})

рони
08.12.2014, 12:39
krutoy,
не видит это вам кажется :stop:

krutoy
08.12.2014, 12:41
это вам кажется
ага, может js-двигу тоже кажется?

рони
08.12.2014, 12:44
krutoy,
alert([8,11,44,0,5].sort());
sort() по умолчанию сортирует всё как строки

рони
08.12.2014, 12:50
:write: и reverse ненадо
alert([8,11,44,0,5].sort(function (a,b){return b - a}));

krutoy
08.12.2014, 12:55
рони,
Да, похоже на то, исправил, спасибо.

krutoy
08.12.2014, 12:58
рони,
А почему так сделано?
ЗЫ думаю потому, что так реализация проще. Все обрабатывается по единому алгоритму, если не указано иное.

Skriptor
08.12.2014, 16:14
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=window-1251">
</head>
<body>
<script language="javascript">
array=[]
for (i=0; i<5; i++) {
array.push(+prompt ("Введите число"))
}
delete(i)
document.write (array.sort(function(a, b){return b-a}).join(" "));
</script>
</body>
</html>


Отличнейше! Спасибо! Очень интересный вариант, и работает! Сейчас разбираю почему у меня выдавало ошибку в консоли на функцию (array.sort(function(a, b){return b-a})
Также интересно Вы применили операторы push, delete(i) и join. Кроме того, вопрос - как без параметра Number() решили задачу введения не строчных, а числовых значений в параметре prompt.

рони
08.12.2014, 16:35
Skriptor,
а главное как он ловко использует charset=window-1251, с каким упорством игнорирует var, зато умеет всунуть ненужный delete и как брутально смотрится сам код, нет никаких гламурных отступов ... мда

kobezzza
08.12.2014, 16:40
krutoy,
sort() по умолчанию сортирует всё как строки

Век живи - век учись, я этого не знал :)

krutoy
08.12.2014, 17:15
ненужный delete

for (i=0; i<5; i++) {
}
alert(i)
alert(window["i"])
delete(i)
alert(window["i"])
alert(i)



for (var i=0; i<5; i++) {
}
alert(i)
alert(window["i"])
delete(i)
alert(window["i"])
alert(i)

Предлагаешь в функцию оборачивать каждый раз?

krutoy
08.12.2014, 17:20
как без параметра Number() решили задачу введения не строчных, а числовых значений в параметре prompt.
там плюс стоит перед промпт,

alert(typeof +"10")

Так можно приводить к числу, просто короче.

danik.js
08.12.2014, 17:33
Предлагаешь в функцию оборачивать каждый раз?
Предлагаешь в глобал срать каждый раз?

krutoy
08.12.2014, 18:03
Предлагаешь в глобал срать каждый раз?
Ты блять, идиот? Рони утверждал, что я там delete бестолку поставил.
зато умеет всунуть ненужный delete

Deff
08.12.2014, 18:22
krutoy,
Взял да обернул, чо тебе стоит, вот я на раз:
http://sa.uploads.ru/lT1G3.png

krutoy
08.12.2014, 18:29
Deff,
Смысл в том, что delete там не просто так стоит. Можно и обернуть, да.

Deff
08.12.2014, 18:32
krutoy,
:dance: слишком серъёзен!

Skriptor
12.12.2014, 04:09
Как представить это в виде функции, которую можно вставить в любую часть документа? Попробовал - не срабатывает... почему? что исправить?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=window-1251">
</head>
<body>
<script language="javascript">
function sortirovka (array) {
var array = [];
for (i=0; i<5; i++) {
array [i] = Number(prompt ("Введите число"));
}
array.sort(function(a, b) { return b - a; });
alert(array.join(', '));
document.write (array.join(', '));}
</script>
<script language="javascript">
function sortirovka (array)
</script>
</body>
</html>