Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как найти макс. и мин. значение в массиве?
 
 автор: coloboc66   (11.04.2008 в 13:47)   письмо автору
 
 

var strcoords_x= '35,21,78,65,46,90';
var arrcoords_x=strcoords_x.split(',');
var x_min=Math.min(arrcoords_x); - так не прокатывает, а как надо?
Спасибо.

   
 
 автор: Crux   (11.04.2008 в 13:59)   письмо автору
 
   для: coloboc66   (11.04.2008 в 13:47)
 

Math.min(x, y) - Возвращает меньшее из двух чисел.

готовой функции помоему нет... хотя тут могу и ошибится

   
 
 автор: coloboc66   (11.04.2008 в 14:13)   письмо автору
 
   для: Crux   (11.04.2008 в 13:59)
 

Пробовал просто отсортировать массив arrcoords_x.sort() и взять первое и последнее значение - тоже не получается.//

   
 
 автор: Antohins   (11.04.2008 в 14:09)   письмо автору
 
   для: coloboc66   (11.04.2008 в 13:47)
 

var min = arrcoords_x[0];
for (var i = 0;i<arrcoords_x.length;i++)
{
eval('if(arrcoords_x['+i+']<min){min = arrcoords_x['+i+'];});
}

типа задаем переменной МИН первый элемент массива, а потом сравниваем в цикле, если текущий элемент меньше МИН, то он будет МИН. и т.д. до конца. 1 курс))

   
 
 автор: coloboc66   (11.04.2008 в 14:14)   письмо автору
 
   для: Antohins   (11.04.2008 в 14:09)
 

1 курс чего? Мы "академиев" не кончали...

   
 
 автор: Antohins   (11.04.2008 в 14:17)   письмо автору
 
   для: coloboc66   (11.04.2008 в 14:14)
 

института... метод самый надежный и безболезненный..

   
 
 автор: Lelik   (11.04.2008 в 14:27)   письмо автору
 
   для: Antohins   (11.04.2008 в 14:17)
 

а нафига тут эвал если и без него можно преспокойно обойтись?

   
 
 автор: Antohins   (11.04.2008 в 14:43)   письмо автору
 
   для: Lelik   (11.04.2008 в 14:27)
 

Недавно пробовал без евала юзать массив в цикле, у меня что т не получалось, а с евалом все норм, поэтому и написал..
Приведи пожалуйста рабочий код данный мной выше без евала, интересно..

   
 
 автор: coloboc66   (11.04.2008 в 14:52)   письмо автору
 
   для: Antohins   (11.04.2008 в 14:43)
 

Вот рабочий код без eval() :

var strcoords_x= '35,21,78,65,46,90';
var arrcoords_x=strcoords_x.split(',');
var x_min = arrcoords_x[0];
for (var i = 0;i<arrcoords_x.length;i++)
{
if(arrcoords_x[i]<x_min){x_min = arrcoords_x[i];}
}
alert(x_min);

   
 
 автор: Antohins   (11.04.2008 в 15:18)   письмо автору
 
   для: coloboc66   (11.04.2008 в 14:52)
 

я тоже так пробовал, но у меня не получалось.. поэтому и прибег к евалу. значт чет накосячил, ща бум исправлять ;]

   
 
 автор: coloboc66   (11.04.2008 в 16:37)   письмо автору
 
   для: Antohins   (11.04.2008 в 15:18)
 

Кажись: в самом деле есть косяки в лисе...

   
 
 автор: AlexSol   (11.04.2008 в 16:41)   письмо автору
 
   для: coloboc66   (11.04.2008 в 16:37)
 

может стоит числа сравнивать?

var strcoords_x= '35,21,78,65,46,90'; 
var arrcoords_x=strcoords_x.split(','); 
var x_min = arrcoords_x[0]*1
for (var i = 1;i<arrcoords_x.length;i++) 

arrcoords_x[i] = arrcoords_x[i]*1;
if(arrcoords_x[i]<x_min){x_min = arrcoords_x[i];} 

alert(x_min);

   
 
 автор: Antohins   (11.04.2008 в 17:02)   письмо автору
 
   для: AlexSol   (11.04.2008 в 16:41)
 

зачем тут умножение?

То что начали с первого элемента понятно, сами себя получается сравнивать будем, а причем тут умножение на еденицу?

   
 
 автор: AlexSol   (11.04.2008 в 17:21)   письмо автору
 
   для: Antohins   (11.04.2008 в 17:02)
 

переводит строку в число

   
 
 автор: coloboc66   (11.04.2008 в 17:48)   письмо автору
 
   для: AlexSol   (11.04.2008 в 17:21)
 

Всё правильно - нужно умножать на единицу, чтобы явно привести к числовому типу.

   
 
 автор: Lelik   (11.04.2008 в 17:57)   письмо автору
 
   для: coloboc66   (11.04.2008 в 17:48)
 

ну есть еще функции по типу parseInt(), parseFloat(), например...

   
 
 автор: AlexSol   (11.04.2008 в 21:59)   письмо автору
 
   для: Lelik   (11.04.2008 в 17:57)
 

*1 работает быстрее чем parseInt(), parseFloat(), Number()

может здесь это не принципиально, но знать полезно )

   
 
 автор: Antohins   (11.04.2008 в 18:10)   письмо автору
 
   для: AlexSol   (11.04.2008 в 17:21)
 

Если в массиве заданы числа, зачем же все усложнять? Чисто пионерский интерес.

У него даже название массива говорит за себя

   
 
 автор: AlexSol   (11.04.2008 в 21:59)   письмо автору
 
   для: Antohins   (11.04.2008 в 18:10)
 

посмотри как массив получается

   
 
 автор: RMW   (11.04.2008 в 19:50)   письмо автору
 
   для: coloboc66   (11.04.2008 в 13:47)
 

Math.min.apply(null,arrcoords_x);

   
 
 автор: CNTv2.0   (11.04.2008 в 20:17)   письмо автору
 
   для: coloboc66   (11.04.2008 в 13:47)
 

var strcoords_x = '35,21,78,65,46,90';
var arrcoords_x = strcoords_x.split (',');
arrcoords_x.sort (new Function ('x', 'y', 'return parseInt (x) - parseInt (y)'));
alert ('min - ' + arrcoords_x [0] + '\nmax - ' + arrcoords_x [arrcoords_x.length - 1]);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования