Робота з масивами в 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();