Initialisation
Here are the different methods for initialising arrays:// first method
var a = [];
a[0] = 'a';
a[1] = 'b';
a[2] = 'c';
// second method
var b = new Array('a', 'b', 'c');
// third method
var c = ['a', 'b', 'c'];
Note that the following initialises an array with 2 elements, not an array with 2 as the first element. If you knew the approximate size you want to work with before have this would likely have performance benefits.var x = new Array(2); alert(x[0]); // alerts 'undefined' alert(x.length); // alerts '2'
Multi-dimensional arrays
Arrays can store anything that you can use a variable to store, including arrays.// first method
var x = ['a', 'b', 'c'];
var y = ['d', 'e', 'f'];
var z = [x, y];
alert(z[1][0]); // alerts 'd'
// second method
var x = new Array(new Array('a', 'b', 'c'),
new Array('d', 'e', 'f'));
alert(x[1][0]); // alerts 'd'
Data structures
It's easy to use arrays to store certain data structures with some features being that are built into JavaScript.Stack
var stack = [];
stack.push('a');
stack.push('b');
alert(stack.pop()); // alerts 'b'
stack.push('c'); // stack = ['a', 'c']
Queue
var queue = [];
queue.push('a');
queue.push('b');
alert(queue.shift()); // alerts 'a'
queue.push('c'); // queue = ['b', 'c']
Cloning an array
Arrays are passed by references and when you an array to a variable you are making a reference to the original array. To clone an array simply call the slice() function without any parameters.var x = ['a', 'b', 'c']; var y = x; var z = x.slice(); y[0] = 'd'; z[0] = 'e'; alert(x[0]); // alerts 'd' alert(y[0]); // alerts 'd' alert(z[0]); // alerts 'e'
Extending arrays with prototypes
To extend types in javascript you add a prototype function to them. Here are a few examples of useful prototypes:
Array.prototype.contains = function(value) {
for (var i = 0; i < this.length; i++) {
if (this[i] === value) {
return true;
}
}
return false;
}
var x = ['a', 'b', 'c'];
alert(x.contains('a')); // alerts 'true'
alert(x.contains('d')); // alerts 'false'
Array.prototype.sortNumeric = function() {
return this.sort(function (a,b) {
return a-b;
});
}
var x = [3, 11, 2];
x.sortNumeric();
alert(x); // alerts '2,3,11'
Array functions
Follows is a list of the functions available to arrays, with parameter
| Function | Parameters | Returns | Details |
|---|---|---|---|
concat
|
value1 [value2] [...] |
array | Joins 2 arrays and returns a new array.var x = ['a', 'b']; var y = ['c']; var z = x.concat(y); // z = ['a', 'b', 'c'] |
every
|
function | boolean | Calls the function provided on each value of the array until the function returns false. If the function returns false then every will also return false.function lessThanTen(value) {
return value < 10;
}
var x = [4, 8];
alert(x.some(lessThanTen)); // alerts 'true'
var y = [10, 5];
alert(y.some(lessThanTen)); // alerts 'false'
|
filter
|
function | array | Filter returns a new array that contains all values in the original array where the function returns true.function lessThanTen(value) {
return value < 10;
}
var x = [10, 5];
var y = x.filter(lessThanTen);
// y = [5]
|
forEach
| function | - | Calls the function for each item in the array.function alertValue(value, i) {
alert('array[' + i + '] = ' + value);
}
var x = ['a', 'b', 'c'];
x.forEach(alertValue);
// alerts:
// 'array[0] = a'
// 'array[1] = b'
// 'array[2] = c'
|
join
|
separator | string | Returns the array with each element joined by the separator provided.var x = ['a', 'b', 'c'];
alert(x.join('|')); // alerts 'c|b|a'
|
indexOf
|
item [startIndex] |
integer | Returns the index of the item or -1 if it does not exist. If a startIndex is provided the search will start at that index.var x = ['a', 'b'];
alert(x.indexOf('a', 1)); // alerts '-1'
alert(x.indexOf('b')); // alerts '1'
alert(x.indexOf('c')); // alerts '-1'
|
lastIndexOf
|
item [startIndex] |
integer | Returns the index of the item or -1 if it does not exist. If a startIndex is provided the search will start at that index. This search begins from the largest index.var x = ['a', 'b', 'b'];
alert(x.lastIndexOf('b')); // alerts '1'
alert(x.lastIndexOf('c')); // alerts '-1'
|
map
|
function | array | Map calls the function on every item in the array and returns a new array containing the values returned for each item.function modTen(value) {
return value % 10;
}
var x = [1, 14, 1023];
var y = x.map(modTen);
// y = [1, 4, 3]
|
pop
|
- | object | Removes the last item from the array and returns it.var x = ['a', 'b', 'c'];
var y = x.pop();
// x = ['b', 'c']
// y = 'a'
|
push
|
value1 [value2] [...] |
integer | Adds a value or values to the end of the array and returns the new length of the array.var x = [];
x.push('a');
x.push('b', 'c');
// x = ['a', 'b', 'c']
|
reverse
|
- | array | Reverses the array and returns itself.var x = ['a', 'b', 'c']; alert(x.reverse()); // alerts 'c,b,a' alert(x); // alerts 'c,b,a' |
shift
|
- | object | Removes the first item from the array and returns it.var x = ['a', 'b', 'c']; alert(x.shift()); // alerts 'a' |
slice
|
[begin] [end] |
array | Slice returns a new array in between the begin and value provided. This can also be called with no parameters to clone the array.var x = ['a', 'b', 'c']; alert(x.slice()); // alerts 'a,b,c' alert(x.slice(1)); // alerts 'b,c' alert(x.slice(0,1)); // alerts 'a' |
some
|
function | boolean | Calls the function provided on each value of the array until the function returns true. If the function returns true then some will also return true.function lessThanTen(value) {
return value < 10;
}
var x = [4, 10];
alert(x.some(lessThanTen)); // alerts 'true'
var y = [10, 15];
alert(y.some(lessThanTen)); // alerts 'false'
|
sort
|
[function] | -? | Sorts the array alphabetically. If a function is provided the array is sorted by the function.function numberCompare(a, b) {
return a - b;
}
var x = [4, 10, 'c', 'a'];
alert(x.sort()); // alerts '10,4,a,c'
var y = [10, 4, 25];
alert(y.sort(numberCompare)); // alerts '4,10,25'
|
splice
|
start [count] [value1] [value2] [...] |
array | Removes a number of elements from the array and returns them, also adds value(s) to that position if provided.var x = ['a', 'b', 'c']; alert(x.splice(1, 1)); // alerts 'b' // x = ['a', 'c'] x.splice(1, 0, 'b', 'd'); // x = ['a', 'b', 'd', 'c'] |
toString
|
- | string | Returns the array joined by the ',' character.var x = ['a', 'b', 'c'];
alert(x.toString()); // alerts 'a,b,c'
alert(x); // alerts 'a,b,c'
alert(x.join(',')); // alerts 'a,b,c'
|
unshift
|
value1 [value2] [...] |
integer | Adds the value to the start of the array and returns the array's new length.var x = ['b', 'c'];
alert(x.unshift('a')); // alerts '3'
// x = ['a', 'b', 'c']
|
valueOf
|
- | string | Same as toString.var x = ['a', 'b', 'c']; alert(x.valueOf()); // alerts 'a,b,c' |