Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.08.2016, 12:42
Новичок на форуме
Отправить личное сообщение для miusov Посмотреть профиль Найти все сообщения от miusov
 
Регистрация: 27.07.2016
Сообщений: 8

Как из строки достать все числа?
В общем. Есть страничка с товарами и ценами, нужно достать все цены и определить максимальную и минимальную, проблема состоит в том что бы вытащить цены из строки.

В HTML блоки с ценами выглядят так:
<div class="price">2000 грн</div>
<div class="price">1000 грн</div>
<div class="price">3000 грн</div>
<div class="price">5000 грн</div>
...


В JQ получается вот такая строка:
var price = $('.price').text(); //2000 грн1000 грн3000 грн5000 грн ...


Как из такой строки получить минимальное и максимальное число?
Ответить с цитированием
  #2 (permalink)  
Старый 28.08.2016, 13:07
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

miusov,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() { var min,max;
$('.price').text(function(i,t) {
t = +t.replace(/\D/g,'');
(!min|| t < min)&&(min=t);
(!max|| t > max)&&(max=t);
})
alert([min,max])
});
  </script>
</head>

<body>
<div class="price">2000 грн</div>
<div class="price">1000 грн</div>
<div class="price">3000 грн</div>
<div class="price">5000 грн</div>



</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2016, 10:34
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

jQuery(function ( $ ) {
	var prices	= $('.price').text().match(/\d+/g).sort(),
		min		= prices[0],
		max		= prices[ prices.length - 1 ];
});

Последний раз редактировалось dd_smol, 29.08.2016 в 10:39.
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2016, 10:43
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от miusov
Как из такой строки получить минимальное и максимальное число?
Как вариант...
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	var price = $('.price').text().match(/\d+/g).sort();
	alert('min: '+price[0]+' max: '+price[price.length-1])
});
</script>
</head>
<body>
<div class="price">2000 грн</div>
<div class="price">1000 грн</div>
<div class="price">3000 грн</div>
<div class="price">5000 грн</div>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2016, 10:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Опередили...
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2016, 10:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

dd_smol,
нужна функция сортировки! иначе цифры отсортируются как строки.

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() { var min,max;

  var prices	= $('.price').text().match(/\d+/g).sort(),
    min		= prices[0],
    max		= prices[ prices.length - 1 ];


alert([min,max])
});
  </script>
</head>

<body>
<div class="price">2000 грн</div>
<div class="price">1000 грн</div>
<div class="price">3000 грн</div>
<div class="price">9 грн</div>



</body>
</html>

Последний раз редактировалось рони, 29.08.2016 в 10:55.
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2016, 10:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

ksa,
тоже самое
Ответить с цитированием
  #8 (permalink)  
Старый 29.08.2016, 10:47
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от рони
нужна функция сортировки! иначе цыфры отсортируются как строки
Про это забыл... И пример не имеет таких данных.
Ответить с цитированием
  #9 (permalink)  
Старый 29.08.2016, 10:49
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068


<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() { var min,max;

  var prices	= $('.price').text().match(/\d+/g).sort(function(a,b) {
  return a - b
}),
    min		= prices[0],
    max		= prices[ prices.length - 1 ];


alert([min,max])
});
  </script>
</head>

<body>
<div class="price">2000 грн</div>
<div class="price">1000 грн</div>
<div class="price">3000 грн</div>
<div class="price">9 грн</div>



</body>
</html>
Ответить с цитированием
  #10 (permalink)  
Старый 29.08.2016, 10:53
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

Точно есть такой не приятный момент.
Тогда немного до делаем:
jQuery(function ( $ ) {
	var prices	= $('.price').text().match(/\d+/g).sort(function (a, b) { return a - b; }),
		min		= prices[0],
		max		= prices[ prices.length - 1 ];
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать все содержимое страницы не активным son313 jQuery 9 10.07.2013 16:58
КАК В JQUERY ДОСТАТЬ ВСЕ ЧИСЛА ИЗ СТРОКИ Brook Events/DOM/Window 2 21.12.2012 14:34
Прижать часть строки влево, а часть вправо - как? GRIG (X)HTML/CSS 10 15.03.2012 16:12
как вставить строки в таблицу? Yurik Events/DOM/Window 2 29.02.2012 17:14
Числа скаладываются как строки rasta Общие вопросы Javascript 4 07.04.2011 16:59