Skip to content

Latest commit

 

History

History
158 lines (145 loc) · 3.99 KB

01.md

File metadata and controls

158 lines (145 loc) · 3.99 KB

数组

javascript 数组的定义

  1. 存储元素的线性集合
  2. 在 js 中是一个特殊的对象,包含在 Array 基本数据类型中,索引作为其属性

数组的使用

  • 创建数组
  • 读写数组
  • 数组的常用操作
    • 修改器方法:会改变数组本身

      pop、push、shift、unshift、splice、reverse、sort

    • 访问方法:不会改变数组本身,会返回一个新的数组

      concat、inlcudes、join、slice、toString、indexOf、lastIndexOf

    • 迭代方法:会遍历数组

      forEach、entries、every、filter、find、findIndex、keys、map、reduce

  • 二维数组与多维数组
    • 创建一个二维数组
      var board = [["R", "N", "B", "Q", "K", "B", "N", "R"], ["P", "P", "P", "P", "P", "P", "P", "P"], [" ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " "], ["p", "p", "p", "p", "p", "p", "p", "p"], ["r", "n", "b", "q", "k", "b", "n", "r"]];
      console.log(board.join("\n") + "\n\n");
      board[4][4] = board[6][4];
      board[6][4] = "";
      console.log(board.join("\n"));
    • 用数组将一组值用表格显示
      var values = [];
      for (var x = 0; x < 10; x++) {
        values.push([2 ** x, 2 * x ** 2]);
      }
      console.table(values);

数组练习题

  1. 创建一个记录学生成绩的对象,提供一个添加成绩的方法,以及一个现实学生平均成绩的方法
var grade = {};
grade.store = [];
grade.push = function(number) {
  this.store.push(number);
};
grade.average = function() {
  var store = this.store;
  var result = store.reduce(function(a, b) {
    return a + b;
  });
  return result / store.length;
};
grade.push(77);
grade.push(20);
grade.push(66);
console.log(grade.average());
  1. 将一组单词存储在一个数组中,并安正序和倒叙分别显示这些单词
var word = "hello".split("");
word.reverse();
word.sort(function(a, b) {
  return b - a;
});
console.log(word);
  1. 修改下面的方法,使它可以使用一个二维数组来存储每月的有用数据,增加一些方法用来显示月平均数,具体某一平均数和所有周的平均数
var WeekTemps = function(data) {
  this.store = data;
  this.add = add;
  this.a1 = a1;
  this.a2 = a2;
  this.a3 = a3;
};
var add = function(index, number) {
  this.store[index - 1].push(number);
};
// 月平均数
var a1 = function() {
  var store = this.store;
  var count = 0;
  var result = 0;
  for (var i = 0; i < store.length; i++) {
    for (var j = 0; j < store[i].length; j++) {
      count++;
      result += store[i][j];
    }
  }
  console.log(result / count);
};
// 一周的平均数
var a2 = function() {
  var store = this.store;
  for (var i = 0; i < store.length; i++) {
    var result = 0;
    result = store[i].reduce(function(a, b) {
      return a + b;
    });
    console.log(result / store[i].length);
  }
};
// 所有周的平均数
var a3 = function() {
  var store = this.store;
  var count = 0;
  var week = 0;
  for (var i = 0; i < store.length; i++) {
    count++;
    var result = 0;
    result = store[i].reduce(function(a, b) {
      return a + b;
    });
    week += result / store[i].length;
  }
  console.log(week / count);
};
var _data = [];
var random = function(min, max) {
  return parseInt(min + Math.random() * (max + 1 - min));
};
for (var i = 0; i < 5; i++) {
  _data[i] = [];
}
var run = new WeekTemps(_data);
for (var j = 1; j < 6; j++) {
  for (var k = 0; k < 7; k++) {
    run.add(j, random(10, 50));
  }
}
console.log("月平均数");
run.a1();
console.log("一周平均数");
run.a2();
console.log("所有周平均数");
run.a3();
  1. 创建一个对象,将字母存储在一个数组中,并且用一个方法可以将字母连在一起,显示成一个单词
var fill = {
  store: [],
  push: function(a) {
    this.store.push(a);
  }
};
fill.push("w");
fill.push("o");
fill.push("r");
fill.push("d");
console.log(fill.store.join(""));