Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.01.2013, 20:45
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Проверить, все ли элементы массива удовлетворяют условию одновременно
Подскажите, как проверить, все ли элементы массива удовлетворяют какому-либо условию одновременно.
Что почитать?

Например, мне нужно узнать, все ли элементы числового массива an = [a1,a2,a3,a4,a5] целые, и, если это так, то умножить их на 2, если же хоть один нецелый, то не изменять их.
Как проверять на целость число, знаю: number%1==0.

Получилось проверять только каждый элемент отдельно

<script>
function transformSequence(a1,a2,a3,a4,a5)
{
    var an = [a1,a2,a3,a4,a5];

    for (var i=0; i<an.length; i++){ if (an[i]%1==0)  an[i] *= 2; }

    return an.join(', ');
}
</script>

<button onclick="alert(transformSequence(11,-2,3,-4,5))">Проверить 11, -2, 3, -4, 5</button><br>
<button onclick="alert(transformSequence(0.5,2,1,-7,8))">Проверить 0.5, 2, 1, 7, 8</button>

Последний раз редактировалось Demath, 01.01.2014 в 22:25.
Ответить с цитированием
  #2 (permalink)  
Старый 05.01.2013, 21:04
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

В ECMAScript 5 добавлены соответствующие методы массивов — .every() и .map():
var arr = [11,-2,3,-4,5],
    allInt = arr.every(function (elem) {
        return elem % 1 == 0;
    });
if (allInt) {
    arr = arr.map(function (elem) { return elem * 2; });
}
alert(arr);
Ответить с цитированием
  #3 (permalink)  
Старый 05.01.2013, 21:24
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<script>
function trsfrmSqnce(a) {return a.join('').search(/,|\./)==-1;}
</script>

<button onclick="alert(trsfrmSqnce([11,-2,3,-4,5]))">Проверить 11, -2, 3, -4, 5</button><br>
<button onclick="alert(trsfrmSqnce([0.5,2,1,-7,8]))">Проверить 0.5, 2, 1, 7, 8</button>

Последний раз редактировалось Deff, 05.01.2013 в 21:26.
Ответить с цитированием
  #4 (permalink)  
Старый 05.01.2013, 21:30
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Deff,
1e-1


А, не, черт. .join() преобразует в десятичную нотацию
1e-18

Последний раз редактировалось Amphiluke, 05.01.2013 в 21:32.
Ответить с цитированием
  #5 (permalink)  
Старый 05.01.2013, 21:44
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Amphiluke
1e-1
<script>
function trsfrmSqnce(a) {return a.join('').search(/,|e-|\./)==-1;}
</script>

<button onclick="alert(trsfrmSqnce([11,-2,3,-4,5]))">Проверить 11, -2, 3, -4, 5</button><br>
<button onclick="alert(trsfrmSqnce([0.5,2,1,-7,8]))">Проверить 0.5, 2, 1, 7, 8</button>
Ответить с цитированием
  #6 (permalink)  
Старый 05.01.2013, 21:47
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

Deff, тогда уж с флагом i для полноты счастья.
Хотя необязательно, наверное. join все равно переведет в нижний регистр.

Последний раз редактировалось Amphiluke, 05.01.2013 в 21:50.
Ответить с цитированием
  #7 (permalink)  
Старый 05.01.2013, 21:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Amphiluke,
Да тут не соль - функция ток проверяет при зараннее заданном условии что все цифры, так шо чисто повыпендривацо
Ответить с цитированием
  #8 (permalink)  
Старый 06.01.2013, 00:21
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Всем спасибо. Всё пригодилось
Ответить с цитированием
  #9 (permalink)  
Старый 06.01.2013, 14:08
Аватар для Demath
Профессор
Отправить личное сообщение для Demath Посмотреть профиль Найти все сообщения от Demath
 
Регистрация: 22.06.2012
Сообщений: 168

Сообщение от Amphiluke Посмотреть сообщение
В ECMAScript 5 добавлены соответствующие методы массивов — .every() и .map():
var arr = [11,-2,3,-4,5],
    allInt = arr.every(function (elem) {
        return elem % 1 == 0;
    });
if (allInt) {
    arr = arr.map(function (elem) { return elem * 2; });
}
alert(arr);
Amphiluke, а возможно ли добавить поддержку IE>=8?

А то IE8 пишет, что объект не поддерживает это свойство или метод
Ответить с цитированием
  #10 (permalink)  
Старый 06.01.2013, 14:33
Аватар для Amphiluke
   ☽
Отправить личное сообщение для Amphiluke Посмотреть профиль Найти все сообщения от Amphiluke
 
Регистрация: 07.01.2011
Сообщений: 254

https://developer.mozilla.org/en-US/...#Compatibility
https://developer.mozilla.org/en-US/...#Compatibility
или сразу
https://github.com/kriskowal/es5-shim/
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить загружены ли все картинки браузером Aderba jQuery 13 29.05.2014 14:18
Пустые элементы массива lammeR Общие вопросы Javascript 5 25.05.2010 02:59
Выбрать все элементы кроме $(this) shustrikk jQuery 2 13.03.2010 14:17
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37
Как удалить все пустые элементы UL smashercosmo Events/DOM/Window 13 25.02.2009 09:03