zoukankan      html  css  js  c++  java
  • 《学习javascript数据结构与算法》——第二章:数组

    例子:求斐波拉契数列的前20个数字

    前两个数字都是1,从第三项开始,每一项都等于前两项之和

    var fibonacci = [];
    fibonacci[0] = 1;
    fibonacci[1] = 1;
    for (var i = 2; i < 20; i++) {
    	fibonacci[i] = fibonacci[i-1] + fibonacci[i-2];
    }
    console.log(fibonacci);			//[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765]
    

    数组尾部添加和删除元素元素

    //添加一个元素
    var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    numbers[numbers.length] = 10;
    
    //添加任意个元素
    numbers.push(11, 12, 13);
    
    //删除最后一个元素
    numbers.pop();
    

    数组首部添加和删除元素

    将所有元素向后移一个位置,腾出第一个元素的位置,来添加元素

    var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    for (var i = numbers.length; i >= 0; i--) {
    	numbers[i] = numbers[i-1];
    }
    numbers[0] = -1;
    console.log(numbers);		//[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    添加任意个元素

    var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    numbers.unshift(-2, -1);
    console.log(numbers);		//[-2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    将所有元素向前移一个位置(不能达到删除第一个元素的效果,只能覆盖,长度还是没变)

    var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    for (var i = 0; i < numbers.length; i++) {
    	numbers[i] = numbers[i+1];
    }
    console.log(numbers);		//[1, 2, 3, 4, 5, 6, 7, 8, 9, undefined]
    

    使用shift方法,删除第一个元素

    numbers.shift();
    

    数组指定位置添加、删除和替换元素

    var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    //删除指定位置相应数量的元素
    numbers.splice(5, 3);			//[0, 1, 2, 3, 4, 8, 9]
    //指定位置添加任意个元素
    numbers.splice(5, 0, 5, 6, 7);	//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    //指定位置替换元素
    numbers.splice(5, 3, 1, 2);		//[0, 1, 2, 3, 4, 1, 2, 8, 9]
    

    遍历二维数组

    var arr = [[1, 2, 3, 4, 5], [11, 22, 33, 44, 55]];
    function TwoDime(array) {
    	for (var i = 0; i < array.length; i++) {
    		for (var j = 0; j < array[i].length; j++) {
    			console.log(array[i][j]);
    		}
    	}
    }
    TwoDime(arr);
    

    遍历三维数组

    for (var x = 0; x < arr.length; x++) {
    	for (var y = 0; y < arr[x].length; y++) {
    		for (var z = 0; z < arr[x][y].length; z++) {
    			console.log(arr[x][y][z]);
    		}
    	}
    }
    

    创建3x3矩阵

    使用3层嵌套的for语句

    var arr = [];
    for (var x = 0; x < 3; x++) {
    	arr[x] = [];			//千万不要忘记这些设定,否则嵌套在里面的数组无法设置值
    	for (var y = 0; y < 3; y++) {
    		arr[x][y] = [];
    		for (var z = 0; z < 3; z++) {
    			arr[x][y][z] = "" + x + y + z;
    		}
    	}
    }
    console.log(arr);
    
    //[[["000", "001", "002"], ["010", "011", "012"], ["020", "021", "022"]], [["100", "101", "102"], ["110", "111", "112"], ["120", "121", "122"]], [["200", "201", "202"], ["210", "211", "212"], ["220", "221", "222"]]]
  • 相关阅读:
    WinEdt && LaTex(五)—— 内容的排版
    WinEdt && LaTex(五)—— 内容的排版
    WinEdt && LaTex(四)—— 自定义新命令(newcommand、def)
    WinEdt && LaTex(四)—— 自定义新命令(newcommand、def)
    独立与条件独立
    “人”之为人:道德+技能+创新
    android之ListPreference的用法_PreferenceActivity用法
    【Oracle】删除重复记录
    wso2esb源码编译总结
    .net网站开发(设计):1.什么是MVC模式
  • 原文地址:https://www.cnblogs.com/u14e/p/5314662.html
Copyright © 2011-2022 走看看