Відмінності між версіями «Робота з масивами в JavaScript»
Рядок 25: | Рядок 25: | ||
a.push(this[i]); | a.push(this[i]); | ||
} | } | ||
+ | |||
return a; | return a; | ||
}; | }; | ||
Рядок 76: | Рядок 77: | ||
alert(a.min()); // повертає 1 | alert(a.min()); // повертає 1 | ||
+ | '''Сортування числових масивыв'''<br> | ||
+ | У JavaScript є функція sort (), яка може сортувати масиви, однак за замовчуванням, вона сортує за алфавітом, навіть у тому випадку, якщо в масиві знаходяться числа. Тобто, масив виду [200,25,100,2,1,15] буде відсортований у вигляді [1,15,100,2,25,200], при тому, що правильним сортуванням був би варіант [1,2,15,25,100,200]. | ||
+ | Щоб правильно виконати сортування числового масиву, у функцію sort () потрібно передати callback функцію: | ||
+ | var a = [1,15,100,2,25,200]; | ||
+ | var b = a.sort(function (a,b) { return a-b; }); | ||
+ | Щоб постійно не вписувати у функцію sort () цю анонімну функцію, можна доповнити об'єкт Array новою функцією sortNum: | ||
+ | Array.prototype.sortNum = function() { | ||
+ | return this.sort( function (a,b) { return a-b; } ); | ||
+ | } | ||
+ | |||
+ | |||
+ | var a = [1,15,100,2,25,200]; | ||
+ | var b = a.sortNum(); |
Версія за 08:21, 21 травня 2010
Виділення унікальних значень Виділити унікальні значення можна за допомогою функції
function arrayUnique( ar ) { var a = []; var l = ar.length; for(var i = 0; i < l; i++) { for(var j = i+1; j < l; j++) { if (ar[i] === ar[j]) j = ++i; } a.push(ar[i]); } return a; }
також можна добавити функцію в клас Array:
Array.prototype.unique = function() { var a = []; var l = this.length; for(var i = 0; i < l; i++) { for(var j = i+1; j < l; j++) { if (this[i] === this[j]) j = ++i; } a.push(this[i]); }
return a; };
Приклад:
var aList = [1,3,2,1,1,5,3,2]; alert( aList.unique() );
// результат 1,5,3,2
Копіювання масива Щоб скопіювати масив, можна скористатися функцією concat () об'єкта Array. Вона призначена для об'єднання двох масивів, але якщо ми створимо порожній масив і смакота його з масивом, який потрібно скопіювати, то отримаємо копію масиву. Наприклад:
var arrayToCopy = [ 1, 2, 3, 4, 5 ];
var copyOfArray = [].concat(arrayToCopy);
Для зручності можна створити копію яка повертає копію масива:
function copyArray( ar ){ return [].concat( ar ); }
Або можна добавити функцію copy до класу Array:
Array.prototype.copy = function() { return [].concat(this); };
// приклад використання var aList = [1,2,3,4,5];
var newList = aList.copy();
Отримання максимального значення масива Максимальний элемент масива може бути отриманий за допомогою функції, добавлену до класу Array:
Array.prototype.max = function(){ return Math.max.apply({},this) }
Приклад використання:
var a = [1,2,3,5,4,3,1,34,32,2,12];
alert(a.max()); // повертає 34
Отримання мінімального елемента масива Мінімальний элемент масива може бути отриманий за допомогою наступної функції, добавленої до класу Array:
Array.prototype.min = function(){ return Math.min.apply({},this) }
Приклад використання:
var a = [1,2,3,5,4,3,1,34,32,2,12];
alert(a.min()); // повертає 1
Сортування числових масивыв
У JavaScript є функція sort (), яка може сортувати масиви, однак за замовчуванням, вона сортує за алфавітом, навіть у тому випадку, якщо в масиві знаходяться числа. Тобто, масив виду [200,25,100,2,1,15] буде відсортований у вигляді [1,15,100,2,25,200], при тому, що правильним сортуванням був би варіант [1,2,15,25,100,200].
Щоб правильно виконати сортування числового масиву, у функцію sort () потрібно передати callback функцію:
var a = [1,15,100,2,25,200]; var b = a.sort(function (a,b) { return a-b; });
Щоб постійно не вписувати у функцію sort () цю анонімну функцію, можна доповнити об'єкт Array новою функцією sortNum:
Array.prototype.sortNum = function() { return this.sort( function (a,b) { return a-b; } ); }
var a = [1,15,100,2,25,200]; var b = a.sortNum();