2017-09-26 15 views
-2

私はpartysと有権者に候補者を割り当てて投票を行いますが、誰かが私が何をしているのか理解できるように助けてくれるので、例えば、ここで、この機能:(非常に)初心者のJavascripterヘルプ実用的機能を理解する

 class Electorate { 
constructor (newNames) { 
this.name = newNames 
this.allMyElectorates = [] 
this.addWinner = [] 
this.addPartyVotes = [] 
    } 
    addElectorate (...newNames) { 
     for(let i=0;i<newNames.length;i++){ 
      var newElectorate = new Electorate(newNames[i], this.addWinner, 
      this.addPartyVotes) 
      this.allMyElectorates.push(newElectorate) 
      return newElectorate 
    } 
} 
    addWinner(...newNames){ 
     theParty = myElection.findParty (partyName) 
      if (theParty == undefined){ 
       myElection.addIndependant (cadidateName) 
      }else{ 
       theCandidate = theParty.findCandidate (candidateName) 
      }if (theCandidate == undefined) { 
       theParty.addElectorateMP (candidateName, this) 
      }else{ 
       theCandidate.setElectorate (this)} 
     } 
    function totalVotes(...newNumbers){ 
     for(let i=0;i<newNumbers.length;i++){ 
      var newTotalVotes = new totalVotes(newNumbers[i], this) 
      this.addPartyVotes.push(newTotalVotes) 
      return newTotalVotes 
     } 
    } 
    function addWinner(...newNames){ 
     for(let i=0;i<newNumbers.length;i++){ 
      var addWinner = new Winner(newNames[i], this) 
      this.addWinner.push(newWinner) 
      return addWinner 
     } 
    } 


} 

そして、これは私が現時点で参照しようとしているものです:

anElectorate = theElection.addElectorate('Auckland Central') 
anElectorate.addWinner('KAYE, Nicola Laura', 'National Party') 
anElectorate.addPartyVotes(329, 85, 10, 486, 3, 2, 6242, 553, 6101, 158, 
          12652, 1459, 7, 17, 53, 99) 

私はaddPartyVotesから収集されたデータを使用して、新しい機能(totalVotes)を作成したいです(コントローラクラス内で)呼び出す必要があります他のクラスでは、それは変数であり、それを配列でプッシュして戻しているので、何が間違っているのですか?

私はクラスとチューターの人に尋ねてみましたが、本当の指導を与えなければ私を騙しているような気がします。私はエンジニアでプログラマーではありません。 。

+1

'i'がnewNumbers'のために定義された[i]は '関連するすべてのソースコードを含めてください。 – NewToJS

+0

エンジニアなら、プログラミングを知ることは難しくありません。どの言語でプログラミングしても、問題を解決するロジックが適用されます。エンジニアとしては、適用された数学に遭遇したに違いない。ですから、 'JavaScript'についてもう少し詳しく読むのを恐れず、もっとたくさん考えてください。プログラミングは95%の思考と5%のコーディングです。また、あなたのコードに少しコメントをつけてコードを記述すれば、それは完全に助けになるでしょう。 – Sand

+0

私が「エンジニア」と言うとき、私は物事や数学を構築するのがうまくいっていることを意味しますが、あなたの権利は、学校のように私が学びたいと思うように学ぶための正しい方法を見つけなければなりません。 – user8572175

答えて

0

プログラムを壊しているコードや行はありません。 無数のエラーがあり、単に機能しません。

この例(JS ES5)を見てみましょう:

var Electorate = { 
 
    candidates: [], 
 
    init: function() { 
 
    this.candidates = []; 
 
    return this; 
 
    }, 
 
    getCandidateByName: function(name) { 
 
    var filter_candidate_by_name = this.candidates.filter(function(d) { 
 
     return d.name === name; 
 
    })[0]; 
 
    var index_of_candidate = this.candidates.indexOf(filter_candidate_by_name); 
 
    return this.candidates[index_of_candidate]; 
 
    }, 
 
    calculateWinner: function() { 
 
    var max_votes = Math.max.apply(Math, this.candidates.map(function(d) { 
 
     return d.votes.length; 
 
    })); 
 
    if (!max_votes || isNaN(max_votes)) return false; 
 
    var records_with_max_votes = this.candidates.filter(function(d) { 
 
     return d.votes.length === max_votes; 
 
    }); 
 
    var result = {}; 
 
    if (records_with_max_votes.length > 1) { 
 
     result.result = 'Tied'; 
 
     result.candidates = records_with_max_votes; 
 
     var list_of_candidate_names = records_with_max_votes.map(function(d) { 
 
     return d.name; 
 
     }).join(', '); 
 
     result.explaination = 'Tied between ' + list_of_candidate_names + ', with a count of ' + max_votes + ' votes each'; 
 
    } else if (records_with_max_votes.length === 1) { 
 
     result.result = 'Won'; 
 
     result.candidate = records_with_max_votes[0]; 
 
     result.explaination = records_with_max_votes[0].name + ' won with a count of ' + max_votes + ' votes'; 
 
    } 
 
    return result; 
 
    } 
 
}; 
 

 
var Voter = { 
 
    name: null, 
 
    age: null, 
 
    gender: null, 
 
    init: function(name, age, gender) { 
 
    if (!name || !age || !gender) return false; 
 
    this.name = name; 
 
    this.age = age; 
 
    this.gender = gender; 
 
    return this; 
 
    } 
 
}; 
 

 
var Candidate = { 
 
    name: null, 
 
    votes: [], 
 
    init: function(name) { 
 
    this.name = name; 
 
    this.votes = []; 
 
    return this; 
 
    }, 
 
    castVote: function(voter) { 
 
    this.votes.push(voter); 
 
    return this; 
 
    } 
 
}; 
 

 

 
var electorate = Object.create(Electorate).init(); 
 

 
electorate.candidates.push(
 
    Object.create(Candidate).init('Mr. John Smith'), 
 
    Object.create(Candidate).init('Mr. Adam John'), 
 
    Object.create(Candidate).init('Ms. Christina Brown') 
 
); 
 

 
electorate 
 
    .getCandidateByName('Mr. John Smith') 
 
    .castVote(Object.create(Voter).init('Maria Smith', 38, 'Female')) 
 
    .castVote(Object.create(Voter).init('John Doe', 118, 'Male')) 
 
    .castVote(Object.create(Voter).init('John Doe', 44, 'Male')); 
 

 
electorate 
 
    .getCandidateByName('Ms. Christina Brown') 
 
    .castVote(Object.create(Voter).init('John Doe', 235, 'Male')) 
 
    .castVote(Object.create(Voter).init('John Doe', 34, 'Male')) 
 
    .castVote(Object.create(Voter).init('John Doe', 22, 'Male')); 
 

 

 
console.log(electorate.calculateWinner());

あなたはそれが作成され、に追加することができ、アカウントの候補者と有権者に情報を収集し、取ることがわかります本地区内の適切なデータの場所。

これは、すべての票が投じられた後に進み、選択された勝者または結ばれた勝者を発表します。


私の助言は、あなたのJavascriptの知識をブラッシュアップし、ES6追加を使用しないことです。

これはJavascriptをブラッシュアップするための素晴らしいリソースです(経験のすべてのレベルのために):私は見ていないhttps://github.com/getify/You-Dont-Know-JS

+0

返信をありがとう、私はコードアカデミーのサイトを行い、私は合理的な理解を持っていたと思ったが、私たちはこの課題を与えられた、それは全く違う、レイアウトとかなりのすべてと私の心は完全に吹かれた。だから私は私の腸/ google/cut/pasteで行くつもりですが、私の家庭教師が私たちに与えた形式でものを見つけることができないので、Googleはあまり役に立ちません。私はちょっとひどく混乱していて、ちょっと驚いています。 – user8572175

+0

私はお役に立てます。 – IzzyCooper

0

関数は、引数としてthisを使用できません。

有効な機能は次のようになります。あなたは投票/選挙プログラムに関するあなたの全体のスクリプトを共有することができた場合は

function totalVotes (vote) { 
    return "something"; 
} 

、私は効果的なコードを書くことにあなたとあなたのアプローチを導くに役立つ可能性があります。

+0

乾杯、私は今、しようとしている "選挙"クラス全体を編集することができますが、いくつかのクラスファイルがありますので、どのように追加するかについてはわかりません。 – user8572175

+0

これらのファイルの内容をコピー/ペーストできますか?また、この全体の機能は、あなたが知覚しているように機能しません。 – IzzyCooper

関連する問題