JavaScript 數組

遞歸

function factorial() {    // 一個簡單的階乘遞歸
    if (number == 1) {
        return number;
    } else {
        return number factorial(number - 1);
    }
}

console.log(factorial(5));

在遞歸以前,該函數會被掛起,以下圖:javascript

5 * factorial(4)
5 * 4 * factorial(3)
5 * 4 * 3 * factorial(2)
5 * 4 * 3 * 2 * factorial(1)
5 * 4 * 3 * 2 * 1
5 * 4 * 3 * 2
5 * 4 * 6
5 * 24
120

JavaScript 數組

建立數組

var numbers = [];    // 經過 [] 操做符

var numbers = new Array();    // 經過構造函數

Array.isArray(numbers)    // 判斷是否數組

數組中的一些經常使用函數

.indexOf()    // 查找元素,大小寫敏感,返回索引/返回-1

.join()    // 將數組轉化爲字符串

.toString()    // 將數組轉化爲字符串

A.concat(B)    // 合併數組A和B並建立新數組

.splice(起始索引,長度,添加新數組,.....,...)    // 從數組裏截取一個新數組

.push()    // 將一個元素添加到末尾

.unshift()    // 將一個元素添加到開頭

.pop()    // 刪除數組末尾的元素

.shift()    // 刪除數組的第一個元素

.splice(3, 0, 1, 2, 3)    // 從索引爲3的位置開始插入1,2,3

.reverse()    // 翻轉數組中的元素

.sort()    // 按字典順序對元素進行排序

// 從小到大排序
fucntion compare(num1, num2) {
    return num1 - num2;
}

var nums = [...];
nums.sort(compare);

數組的迭代

不產生新數組的迭代
.forEach(square);    // 對數組中的每一個元素使用square函數

.every(isEven)    // 若每一個元素都知足isEven則返回true

.some(isEven)    // 只要有一個元素知足isEven則返回true

.reduce(add)    // 不斷對累加值和後續元素調用add函數,最終返回累加值 / 連接元素

.reduceRight()    // 從右往左
生成新數組的迭代
.map(curve)    // 返回一個通過curve函數處理後的數組

.filter()    // 相似every,返回元素結果爲true的新數組

function isEven(num) {
    return num % 2 == 0;
}

function isOdd(num) {
    return num % 2 != 0;
}

var nums = [];
for(i = 0; i < 10; ++i) {
    nums[i] = i+1;
}

var evens = nums.filter(isEven);    // 2 4 6 8 10
var odds = nums.filter(isOdd);        // 1 3 5 7 9

多維數組

JavaScript: The Good Parts (O'Reilly) P64java

Array.matrix = function(numrows, numcols, initial) {    // 建立多位數組
    var arr = [];
    for (var i = 0; i < numrows; ++i) {
        var columns = [];
        for (var j = 0; j < numcols; ++j) {
            columns[j] = initial;
        }
    arr[i] = columns;
    }
    return arr;
}

var nums = Array.matrix(5,5,0);
var strings = Array.matrix(5,5,"");
相關文章
相關標籤/搜索