rozdzia: Tablice
==================
var empty = [];
var numbers = [
   'zero', 'jeden', 'dwa', 'trzy', 'cztery',
   'pi', 'sze', 'siedem', 'osiem', 'dziewi'
];

empty[1]        // undefined
numbers[1]      // 'jeden';

empty.length    // 0
numbers.length  // 10
   
    
====================================
var numbers_object = {
   '0': 'zero', '1': 'jeden', '2': 'dwa', 
   '3': 'trzy', '4': 'cztery', '5': 'pi', 
   '6': 'sze', '7': 'siedem', '8': 'osiem', 
   '9': 'dziewi'
};
   
    
====================================
var misc = [
    'string', 98.6, true, false, null, undefined,
    ['nested', 'array'], {object: true}, NaN,
    Infinity
];
misc.length    // 10
    
    
====================================
var myArray = [];
myArray.length             // 0

myArray[1000000] = true;
myArray.length             // 1000001
// myArray zawiera jedn waciwo
    
    
====================================
numbers.length = 3;
// numbers ma teraz warto ['zero', 'jeden', 'dwa']
    
    
====================================
numbers[numbers.length] = 'shi';
// numbers ma teraz warto ['zero', 'jeden', 'dwa', 'shi']
    
    
====================================
numbers.push('go');
// numbers ma teraz warto ['zero', 'jeden', 'dwa', 'shi', 'go']
    
    
====================================
delete numbers[2];
// numbers ma teraz warto ['zero', 'jeden', undefined, 'shi', 'go']
    
    
====================================
numbers.splice(2, 1);
// numbers ma teraz warto ['zero', 'jeden', 'shi', 'go']
    
    
====================================
var i;
for (i = 0; i < myArray.length; i += 1) {
    document.writeln(myArray[i]);
}
    
    
====================================
var is_array = function (value) {
    return value &&
        typeof value === 'object' &&
        value.constructor === Array;
};
    
    
====================================
var is_array = function (value) {
    return value &&
        typeof value === 'object' &&
        typeof value.length === 'number' &&
        typeof value.splice === 'function' &&
        !(value.propertyIsEnumerable('length'));
};
    
    
====================================
Array.method('reduce', function (f, value) {
    var i;
    for (i = 0; i < this.length; i += 1) {
        value = f(this[i], value);
    }
    return value;
});
    
    
====================================
// Tworzymy tablic liczb.

var data = [4, 8, 15, 16, 23, 42];

// Definiujemy dwie proste funkcje. 
// Jedna bdzie dodawa dwie liczby, druga je mnoy.

var add = function (a, b) {
   return a + b;
};

var mult = function (a, b) {
   return a * b;
};

// Wywoujemy metod reduce, przekazujc funkcj add.

var sum = data.reduce(add, 0);  // suma wynosi 108

// Wywoujemy metod reduce, przekazujc tym razem funkcj mult.

var product = data.reduce(mult, 1);  // iloczyn wynosi 7418880
    
    
====================================
// Dodajemy dla tablicy data funkcj total

data.total = function () {
   return this.reduce(add, 0);
};

total = data.total();  // total wynosi 108
    
    
====================================
Array.dim = function (dimension, initial) {
   var a = [], i;
   for (i = 0; i < dimension; i += 1) {
      a[i] = initial;
   }
   return a;
}

// Tworzymy tablic zawierajc 10 zer.

var myArray = Array.dim(10,0);
    
    
====================================
var matrix = [
    [0, 1, 2],
    [3, 4, 5],
    [6, 7, 8]
];
matrix[2][1]    // 7
    
    
====================================
for (i = 0; i < n; i += 1) {
   my_array[i] = [];
}

// Uwaga: Array.dim(n, []) nie zadziaa w tym wypadku.
// Kady element uzyskaby referencj do tej samej tablicy,
// co miaoby fatalne skutki.
    
    
====================================
Array.matrix = function (m, n, initial) {
   var a, i, j, mat = [];
   for (i = 0; i < m; i += 1) {
      a = [];
      for (j = 0; j < n; j += 1) {
         a[j] = 0;   
      }
      mat[i] = a;
   }
   return mat;
}

// Tworzymy macierz 4 na 4 wypenion zerami.

var myMatrix = Array.matrix(4, 4, 0);

document.writeln(myMatrix[3][3]);  // 0

// Metoda tworzca macierz jednostkow.

Array.identity = function (n) {
   var i, mat = Array.matrix(n, n, 0);
   for (i = 0; i < n; i += 1) {
      mat[i][i] = 1;
   }
   return mat;
}

myMatrix = Array.identity(4);

document.writeln(myMatrix[3][3]);  // 1
    
    
==================