• JavaScript数据结构 数组 3


    JavaScript数据结构 ---- 数组

    5.二维及多维数组
    5.1 创建二维数组
    二维数组类似一种由行和列构成的数据表格。在JavaScript中创建二维数组,需要先创建一个数组,然后让数组的每个元素也是一个数组。

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

    可以写一个方法来创建数组,该方法根据传入的参数,设定数组的行数、列数及初始值。

    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);
    console.log(nums[1][1]);  // 0
    var names = Array.matrix(3,3,"");
    names[2][3] = "Amy";
    console.log(names[2][3]);  // Amy
    

    5.2 处理二维数组中的元素
    处理二维数组中的元素,有两种基本方式:按列访问和按行访问。 我们以一组同学的成绩为例,来示范这两种方式。 使用一组嵌入式的 for 循环,对于按列访问,外层循环对应行,内层循环对应列。以数组 grades 为例,每一行对应一个同学的成绩记录。可以将该同学的所有成绩相加,然后除以科目数得到该同学的平均成绩。 ```js var grades = [[89,73,92], [76,87,99], [99,100,60]]; var total = 0; var average = 0; for (var row = 0; row < grades.length; row++) { for (var col = 0; col < grades[row].length; col++) { total += grades[row][col]; } average = total / grades[row].length; console.log("Student" + parseInt(row+1) + " average: " + average.toFixed(2)); total = 0; average = 0.0; } //程序输出 /* Student1 average: 84.67 Student2 average: 87.33 Student3 average: 86.33 */ ``` 对于按行访问,只需稍微调整 for 循环的顺序,使外层循环对于列,内存循环对于行。以下计算一个同学各科的平均成绩。 ```js var grades = [[89,73,92], [76,87,99], [99,100,60]]; var total = 0; var average = 0; for (var col = 0; col < grades.length; col++) { for (var row = 0; row < grades[col].length; row++) { total += grades[row][col]; } average = total / grades[col].length; console.log("Test" + parseInt(col+1) + " average: " + average.toFixed(2)); total = 0; average = 0.0; } //程序输出 /* Test1 average: 88.00 Test2 average: 86.67 Test3 average: 83.67 */ ```

    6. 对象数组

    数组可以包含对象,数组的方法和属性对对象依然适用。

    function Point(x, y) {
    	this.x = x;
    	this.y = y;
    }
    
    function displayPts(arr) {
    	for (var i = 0; i < arr.length; i++) {
    		console.log(arr[i].x + ", " + arr[i].y);
    	}
    }
    
    var p1 = new Point(1,2);
    var p2 = new Point(3,5);
    var p3 = new Point(2,8);
    var p4 = new Point(4,4);
    var points = [p1, p2, p3, p4];
    for (var i = 0; i < points.length; i++) {
    	console.log("Point " + parseInt(i+1) + ": " + points[i].x + ", " + points[i].y);
    }
    var p5  = new Point(12, -4);
    points.push(p5);
    console.log("After push: ");
    displayPts(points);
    //输入结果
    /*
    Point 1: 1, 2
    Point 2: 3, 5
    Point 3: 2, 8
    Point 4: 4, 4
    After push: 
    9 1, 2
    9 3, 5
    9 2, 8
    9 4, 4
    9 12, -4
    */
    

    7. 对象中的数组

    在对象中,可以使用数组存储复杂的数据。以一个例子来说明。
    我们创建了一个对象,用于保存观测到的最高周气温。该对象有两个方法,一个方法用来增加一条新的气温记录,另一个方法用来计算存储在对象中的平均气温。

    function weekTemps() {
    	this.dataStore = [];
    	this.add = add;
    	this.average = average;
    }
    
    function add(temp) {
    	this.dataStore.push(temp);
    }
    
    function average() {
    	var total = 0;
    	for (var i = 0; i < this.dataStore.length; i++) {
    		total += this.dataStore[i];
    	}
    	return total / this.dataStore.length;
    }
    
    var thisweek = new weekTemps();
    thisweek.add(3);
    thisweek.add(2);
    thisweek.add(-1);
    thisweek.add(0);
    thisweek.add(5);
    thisweek.add(10);
    thisweek.add(1);
    console.log(thisweek.average()); // 2.857142857142857
    

    参考资料:
    JavaScript高级程序设计
    JavaScript MDN
    Data Structures and Algorithms with JavaScript

  • 相关阅读:
    数据库总结
    数据库 查询方法详解 以学生老师信息表为例
    SQL 常与LIKE关键字配合使用,表示一个模糊的范围 。
    SQL 数据类型
    十分钟搞清字符集和字符编码
    c# 集合
    c# 开根号 牛顿迭代
    c# 打名字
    转 揭开计算机的神秘面纱 来源:吴广磊的博客
    c# while穷举(凑钱)
  • 原文地址:https://www.cnblogs.com/zhoufulin/p/4999451.html
Copyright © 2020-2023  润新知