Робота з масивами в JavaScript
Виділення унікальних значень Виділити унікальні значення можна за допомогою функції
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();