Проверить, все ли элементы массива удовлетворяют условию одновременно
Подскажите, как проверить, все ли элементы массива удовлетворяют какому-либо условию одновременно.
Что почитать? Например, мне нужно узнать, все ли элементы числового массива 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> |
В 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); |
<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,
1e-1 :) А, не, черт. .join() преобразует в десятичную нотацию 1e-18 |
Цитата:
<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> |
Deff, тогда уж с флагом i для полноты счастья. :yes:
Хотя необязательно, наверное. join все равно переведет в нижний регистр. |
Amphiluke,
Да тут не соль - функция ток проверяет при зараннее заданном условии что все цифры, так шо чисто повыпендривацо |
Всем спасибо. Всё пригодилось :thanks:
|
Цитата:
А то IE8 пишет, что объект не поддерживает это свойство или метод :-E |
|
Часовой пояс GMT +3, время: 22:57. |