2017-05-19 3 views
0

私はデモ学生管理をコーディングしています。しかし、以下の問題がありますので、解決してください。どのように配列オブジェクト内のidを検索し、oop javascriptでオブジェクトを編集して削除しますか?

要件

  • は、学生の管理:コンソール建物データテーブルを使用して
  • を削除、編集を追加します。テーブルには、fiedlsが含まれています。idコンソール通話機能に
  • リストを使用してNameAgePoint
  • すべての学生がポイント> = 5を持っています。

これは私のコードです:


// 
function Student(id, name, age, point) { 
    this.id = id; 
    this.name = name; 
    this.age = age; 
    this.point = point; 
} 

Student.prototype = { 
    setId: function (value) { 
    this.id = value; 
    }, 

    getId: function() { 
    return this.id; 
    }, 

    setName: function (value) { 
    this.name = value; 
    }, 

    getName: function() { 
    return this.name; 
    }, 

    setAge: function (value) { 
    this.age = value; 
    }, 

    getAge: function() { 
    return this.age; 
    }, 

    setPoint: function (value) { 
    this.point = value; 
    }, 

    getPoint: function() { 
    return this.point; 
    }, 

}; 

function StudentController(student) { 
    this.listStudent = []; 
    this.id = 1; 
} 

StudentController.prototype = { 
    addNew: function (name, age, point) { 
    var student = new Student(this.id, name, age, point); 
    this.listStudent.push(student); 
    this.id += 1; 
    return student; 
    }, 

これは、関数find IDです。しかし、常に最後のIDを配列オブジェクトに返します。

findId: function (id) { 
    var student = null; 
    for (var i = 0; i < this.listStudent.length; i++) { 
     if (id = this.listStudent[i].getId()) { 
     student = this.listStudent[i]; 
     } 
    } 

    return student; 
    }, 

これは、関数の編集学生です。しかし、それはないgetId機能からfindId();

editStudent: function (student) { 
    var oldStudent = this.findId(student.getId()); 
    console.log('oldStudent', oldStudent); 
    for (var x = 0; x < this.listStudent.length; x++) { 
     if (oldStudent = this.listStudent[x].getId()) { 
     this.listStudent[x] = student; 
     } 
    } 
    }, 

この機能は同じすぎeditStudent()機能することができます。

deleteStudent: function (student) { 
    var crrentStudent = this.findId(student.getId()); 
    for (var y = 0; y < this.listStudent.length; y++) { 
     if (crrentStudent.getId() === this.listStudent[y]) { 
     this.listStudent.splice(y, 1); 
     } 
    } 
    }, 

この学生> = 5のこの機能の並べ替えポイントしかし、私は解決するのに役立つと説明してください:(

// find point student > = 5 
    findByPoint: function (point) { 
    var point = ''; 
    for (var i = 0; i < this.listStudent.length; i++) { 
     if (this.listStudent[i].getPoint() >= point) { 
     return point; 
     } 
    } 
    }, 

    showStudent: function() { 
    console.table(this.listStudent); 
    }, 
}; 

var studentController = new StudentController(); 
studentController.addNew("Hanh", 20, 8); 
studentController.findId(1); 
studentController.editStudent(); 
studentController.deleteStudent(); 

を働いていないように見えるが。どうもありがとう! !

答えて

0

問題は非常に単純です。比較演算子には==にが必要です3210、=が割り当てのためのものであり、

変更findId()機能

findId: function (id) { 
    var student = null; 
    for (var i = 0; i < this.listStudent.length; i++) { 
     if (id == this.listStudent[i].getId()) { // change here 
     student = this.listStudent[i]; 
     } 
    } 

    return student; 
    }, 

editStudent機能に

editStudent: function (student) { 
    var oldStudent = this.findId(student.getId()); 
    console.log('oldStudent', oldStudent); 
    for (var x = 0; x < this.listStudent.length; x++) { 
     if (oldStudent == this.listStudent[x].getId()) { //change here 
     this.listStudent[x] = student; 
     } 
    } 
    }, 
+0

を追加することは、あなたの答えをありがとうございました。ですから、 'editStudent'関数が' student.getId() 'を関数' findId'から呼び出せない理由を説明してください。 –

+0

editStudent関数に引数を渡していないため、 –

関連する問題