1. 程式人生 > >JavaScript數據結構與算法-數組練習

JavaScript數據結構與算法-數組練習

二維 console 單詞 rri ++ day 個數 total 數組練習

一. 創建一個記錄學生成績的對象,提供一個添加成績的方法,以及一個顯示學生平均成績的方法。

// 創建一個記錄學生成績的對象
const Students = function Students () {
    this.grades = [];
    this.addGrage = addGrade;
    this.getAverage = getAverage;
};
// 提供一個添加成績的方法
function addGrade (grade) {
    this.grades.push(grade);
}
// 以及一個顯示學生平均成績的方法
function getAverage () {
    let total = 0;
    let len = this.grades.length;
    while (len--) {
        total += parseInt(this.grades[len], 10);
    }
    return total / this.grades.length;
}
// 示例
let Mazey = new Students();
Mazey.addGrage(90);
Mazey.addGrage(91);
Mazey.addGrage(87);
Mazey.addGrage(99);
Mazey.addGrage(89);
Mazey.addGrage(85);
Mazey.addGrage(92);
console.log(Mazey.getAverage());

二. 將一組單詞存儲在一個數組中,並按正序和倒序分別顯示這些單詞。

// 將一組單詞存儲在一個數組中
let arr = [`Mazey`, `Cherrie`, `John`, `Ada`, `Chole`];
// 正序
console.log(arr.sort());
// 倒序
console.log(arr.sort().reverse());

三. 創建一個對象,使用一個二維數組來存儲每月的有用數據,增加一些方法用以顯示月平均數,具體某一周平均數和所有周的平均數。

const MonthData = function MonthData () {
    // 初始化月數據
    this.monthData = (function () {
        let arr = [];
        let week = 4;
        let day = 7;
        while (week--) {
            arr[week] = [];
            while (day--) {
                arr[week][day] = 0;
            }
            day = 7;
        }
        console.log(arr);
        return arr;
    })();
    this.addData = addData;
    this.getMonthAverage = getMonthAverage;
    this.getWeekAverage = getWeekAverage;
    this.getAllWeekAverage = getAllWeekAverage;
};
function addData (week, day, data) {
    this.monthData[week][day] = data;
}
function getMonthAverage () {
    let arr = this.monthData,
        total = 0,
        day = 0;
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i].length; j++) {
            total += parseInt(arr[i][j], 10);
            day++;
        }
    }
    return total / day;
}
function getWeekAverage (week) {
    let arr = this.monthData[week],
        total = 0;
    for (let i = 0; i < arr.length; i++) {
        total += parseInt(arr[i], 10);
    }
    return total / arr.length;
}
function getAllWeekAverage () {
    let self = this,
        week = this.monthData.length,
        total = (function () {
            let total = 0;
            for (let i = 0; i < week; i++) {
                total += self.getWeekAverage(i) * self.monthData[i].length
            }
            return total;
        })();
        return total / week;
}
// 示例
let Mazey = new MonthData();
Mazey.addData(0, 1, 100);
Mazey.addData(0, 2, 100);
Mazey.addData(0, 3, 100);
Mazey.addData(0, 4, 100);
Mazey.addData(1, 6, 7);
console.log(Mazey.getMonthAverage());
console.log(Mazey.getWeekAverage(0));
console.log(Mazey.getWeekAverage(1));
console.log(Mazey.getAllWeekAverage());

四. 創建這樣一個對象,它將字母存儲在一個數組中,並且用一個方法可以將字母連在一起,顯示成一個單詞。

const Letter = function Letter () {
    this.characters = [];
    this.addCharacter = addCharacter;
    this.toLetter = toLetter;
};
function addCharacter (character) {
    this.characters.push(character);
}
function toLetter () {
    return this.characters.join(``);
}
// 示例
let Mazey = new Letter();
Mazey.addCharacter(`m`);
Mazey.addCharacter(`a`);
Mazey.addCharacter(`z`);
Mazey.addCharacter(`e`);
Mazey.addCharacter(`y`);
console.log(Mazey.toLetter()); // mazey

JavaScript數據結構與算法-數組練習