Min/Max для массивов
Для первого поста не придумал ничего умнее, кроме как перевести коротенький пост любимого всеми Джона Ресига.
http://ejohn.org/blog/fast-javascript-maxmin/
Быстрый Max/Min в JavaScript
Я до сих пор пользовался одним простым, но в то же время очень хорошим приемом. Как быстрее всего найти наибольшее или наименьшее число в массиве?
У этой задачи есть куча решений, включая некоторые очень милые ООП-подходы, использованные в Prototype. Но, как бы то ни было, ни один из них не сравнится с восхитительной простотой этого:
Array.max = function( array ){
return Math.max.apply( Math, array );
};
Array.min = function( array ){
return Math.min.apply( Math, array );
};
Суть приема проста и, после первого же взгляда на код, очевидна: любой встроенной функции JavaScript, принимающей произвольное количество аргументов, в качесте оных аргументов можно передать произвольный массив, подставив его в качестве второго аргумента метода .apply() этой вашей функции.
После этого "открытия", я обнаружил, что подобная техника была упомянута в "книге с носорогом", что меня несколько смутило. Ну, в любом случае, это отличный трюк и люди должны знать о нем.
|
Так было бы логичнее:
Так работать не будет, неправильный аргумент для applay()
Правильно так:
Или я неправильно пытался применить ваш вариант..)
Если уж на то пошло, то лучше так:
Да такой вариант более приемлемый но потом возникают сложности при переборе масива через for in - max будет возвращен как свойство.
А вобще может и не стоит нечего нагромождать, а просто Math.max.apply(null,arr), где arr-массив.
Не нужно перебирать МАССИВ через for in. Уже хотя бы потому, что length тоже будет возвращено как свойство.
Object.defineProperty(Array.prototype, 'max', {
value: function () {
return Math.max.apply(null, this);
},
enumerable: false
});
а как найти min в таком массиве:
чтобы не выдавал 0.
Быть может сначала стоит создать новый массив исключив из текущего все null...
где-то видел команду которая будет игнорировать пустые места в массиве
Добрый день, если у меня есть массив с датами 2017-10-11 к примеру. Дат много . Как мне найти самую маленькую дату?
ES2015 -
Рекомендуется использовать только в случае обработки массивов с небольшим количеством элементов.
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Ob...
почему бы не воспользоваться функцией sort и взять нулевой элемент? При этом можно получить max и min не только числовых значений, но каких угодно, задав функцию сортировки своими правилами.
Anonse erotyczne czestochowa
Strona jak roksa
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.