2017-09-15 6 views
0

ブランチのないオブジェクトとブランチあたりの総売上を返す関数を作成しました。合計売上を得る

var salesPersons = [ 
     {"name": {"first": "Aleen", "last" :"Atkins"}, "sales" : "$2314", "branch": "Austin, TX"}, 
     {"name": {"first": "Alvaro", "last" :"Angelos"}, "sales" : "$1668", "branch": "New York City, NY"}, 
     {"name": {"first": "Denese", "last" :"Dossett"}, "sales" : "$9248", "branch": "Austin, TX"}, 
     {"name": {"first": "Douglas", "last" :"Denney"}, "sales" : "$5058", "branch": "New York City, NY"}, 
     {"name": {"first": "Earline", "last" :"Erickson"}, "sales" : "$18876", "branch": "New York City, NY"}, 
     {"name": {"first": "Herman", "last" :"Hazell"}, "sales" : "$2746", "branch": "New York City, NY"}, 
     {"name": {"first": "Homer", "last" :"Hirth"}, "sales" : "$474", "branch": "Orlando, FL"}, 
     {"name": {"first": "Hwa", "last" :"Heidt"}, "sales" : "$9607", "branch": "San Francisco, CA"}, 
     {"name": {"first": "Hyon", "last" :"Hampshire"}, "sales" : "$13598", "branch": "New York City, NY"}, 
     {"name": {"first": "Issac", "last" :"Ingerson"}, "sales" : "$5225", "branch": "Austin, TX"}, 
     {"name": {"first": "Jeraldine", "last" :"Joplin"}, "sales" : "$2891", "branch": "New York City, NY"}, 
     {"name": {"first": "Jin", "last" :"Jeffrey"}, "sales" : "$14402", "branch": "Austin, TX"}, 
     {"name": {"first": "Joleen", "last" :"Jolin"}, "sales" : "$15736", "branch": "Austin, TX"}, 
     {"name": {"first": "Jude", "last" :"Jarrett"}, "sales" : "$7557", "branch": "San Francisco, CA"}, 
     {"name": {"first": "Magda", "last" :"Mireles"}, "sales" : "$1498", "branch": "Austin, TX"}, 
     {"name": {"first": "Mistie", "last" :"Montealegre"}, "sales" : "$6920", "branch": "New York City, NY"}, 
     {"name": {"first": "Nancy", "last" :"Napoli"}, "sales" : "$5255", "branch": "New York City, NY"}, 
     {"name": {"first": "Regine", "last" :"Rohrbaugh"}, "sales" : "$7881", "branch": "Orlando, FL"}, 
     {"name": {"first": "Rolando", "last" :"Riebel"}, "sales" : "$8573", "branch": "San Francisco, CA"}, 
     {"name": {"first": "Scarlett", "last" :"Stagg"}, "sales" : "$7126", "branch": "Orlando, FL"}, 
     {"name": {"first": "Sherron", "last" :"Strawn"}, "sales" : "$8848", "branch": "New York City, NY"}, 
     {"name": {"first": "Susan", "last" :"Shilling"}, "sales" : "$8542", "branch": "Seattle, WA"}, 
     {"name": {"first": "Tama", "last" :"Tworek"}, "sales" : "$9200", "branch": "Seattle, WA"}, 
     {"name": {"first": "Tonisha", "last" :"Taunton"}, "sales" : "$5219", "branch": "Orlando, FL"}, 
     {"name": {"first": "Vergie", "last" :"Villescas"}, "sales" : "$8712", "branch": "New York City, NY"} 
    ]; 

    function convertSalesToInt(person){ 
     var salesInt = person.sales.slice(1); 
     return parseInt(salesInt, 10); 
    } 

    function salesPerBranch(salesPersons){ 
    var myObj = {}; 
    var uniq = []; 
    var total = 0; 

    for(var i = 0; i < salesPersons.length; i++){ 
     var splitTeam = salesPersons[i].branch; 
     if(uniq.indexOf(salesPersons) < 0){ 
     myObj[salesPersons] = total+= convertSalesToInt(salesPersons[i]); 
     } 
    } 

    return myObj; 


    } 

    console.log(salesPerBranch(salesPersons)); 
    /* { 'Austin, TX': 110898, 
    'New York City, NY': 187174, 
    'Orlando, FL': 178462, 
    'San Francisco, CA': 139527, 
    'Seattle, WA': 173243 } */ 

答えは次のようになります。私は今、立ち往生しています

{ 
    'Austin, TX': 48423, 
    'New York City, NY': 74572, 
    'Orlando, FL': 20700, 
    'San Francisco, CA': 25737, 
    'Seattle, WA': 17742 
} 

部分だけは、私は、各支店の総売上を追加する部分です。今、それは正しい量を引き上げていません。この部分はそれに責任があります:

私の間違いを知っていて、どうすればいいですか?

ありがとうございます!

答えて

3

var salesPersons = [ 
 
    {"name": {"first": "Aleen", "last" :"Atkins"}, "sales" : "$2314", "branch": "Austin, TX"}, 
 
    {"name": {"first": "Alvaro", "last" :"Angelos"}, "sales" : "$1668", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Denese", "last" :"Dossett"}, "sales" : "$9248", "branch": "Austin, TX"}, 
 
    {"name": {"first": "Douglas", "last" :"Denney"}, "sales" : "$5058", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Earline", "last" :"Erickson"}, "sales" : "$18876", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Herman", "last" :"Hazell"}, "sales" : "$2746", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Homer", "last" :"Hirth"}, "sales" : "$474", "branch": "Orlando, FL"}, 
 
    {"name": {"first": "Hwa", "last" :"Heidt"}, "sales" : "$9607", "branch": "San Francisco, CA"}, 
 
    {"name": {"first": "Hyon", "last" :"Hampshire"}, "sales" : "$13598", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Issac", "last" :"Ingerson"}, "sales" : "$5225", "branch": "Austin, TX"}, 
 
    {"name": {"first": "Jeraldine", "last" :"Joplin"}, "sales" : "$2891", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Jin", "last" :"Jeffrey"}, "sales" : "$14402", "branch": "Austin, TX"}, 
 
    {"name": {"first": "Joleen", "last" :"Jolin"}, "sales" : "$15736", "branch": "Austin, TX"}, 
 
    {"name": {"first": "Jude", "last" :"Jarrett"}, "sales" : "$7557", "branch": "San Francisco, CA"}, 
 
    {"name": {"first": "Magda", "last" :"Mireles"}, "sales" : "$1498", "branch": "Austin, TX"}, 
 
    {"name": {"first": "Mistie", "last" :"Montealegre"}, "sales" : "$6920", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Nancy", "last" :"Napoli"}, "sales" : "$5255", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Regine", "last" :"Rohrbaugh"}, "sales" : "$7881", "branch": "Orlando, FL"}, 
 
    {"name": {"first": "Rolando", "last" :"Riebel"}, "sales" : "$8573", "branch": "San Francisco, CA"}, 
 
    {"name": {"first": "Scarlett", "last" :"Stagg"}, "sales" : "$7126", "branch": "Orlando, FL"}, 
 
    {"name": {"first": "Sherron", "last" :"Strawn"}, "sales" : "$8848", "branch": "New York City, NY"}, 
 
    {"name": {"first": "Susan", "last" :"Shilling"}, "sales" : "$8542", "branch": "Seattle, WA"}, 
 
    {"name": {"first": "Tama", "last" :"Tworek"}, "sales" : "$9200", "branch": "Seattle, WA"}, 
 
    {"name": {"first": "Tonisha", "last" :"Taunton"}, "sales" : "$5219", "branch": "Orlando, FL"}, 
 
    {"name": {"first": "Vergie", "last" :"Villescas"}, "sales" : "$8712", "branch": "New York City, NY"} 
 
]; 
 

 
function convertSalesToInt(person){ 
 
    var salesInt = person.sales.slice(1); 
 
    return parseInt(salesInt, 10); 
 
} 
 

 
function salesPerBranch(salesPersons){ 
 
    var myObj = {}; 
 

 
    for(var i = 0; i < salesPersons.length; i++){ 
 
    var splitTeam = salesPersons[i].branch; 
 
    myObj[splitTeam] = myObj[splitTeam] ? myObj[splitTeam]: 0; 
 
    myObj[splitTeam] += convertSalesToInt(salesPersons[i]); 
 
    } 
 

 
    return myObj; 
 
} 
 

 
console.log(salesPerBranch(salesPersons));

あなたは、あなたがそれに追加している場合は、売上高がゼロにする、データをカウントしていないかどうかを確認する必要があります。

+0

こんにちはを行う必要があり、私はオブジェクトと弱いだからあなたの答えの一部を理解しようとしています。この行については、 "myObj [splitTeam] = myObj [splitTeam]?myObj [splitTeam]:0;" ;これは「if(myObj [splitTeam])」がmyObj [splitTeam]:0を返すのと同じですか?それはただ1つの式が返されているのですか?私は3つの演算子で2つの式を見たことがあります –

+1

this'myObj [splitTeam] = myObj [splitTeam] = myObj [splitTeam] = 0} 'と同じです。これは、if(myObj [splitTeam])= myObj [splitTeam] = myObj [splitTeam]} else {myObj [splitTeam] = 0}'と同じです。私たちは最初に値をundefindにするオブジェクトを1つ追加していますので、値がある場合は0に設定します。 – Durga

+0

さらにもう1つ、オブジェクトは重複をスキップすることを知っていますか?配列、彼は重複したプロパティを持つオブジェクトを持っています。オブジェクトはそれをスキップして、ユニークなプロパティを取るだけですか?説明のためにありがとうたくさんの{key、value}を追加しながらオブジェクト内の –

1

@ Durgaの答えに触発されたやや異なる方法があります。彼の答えを理解するためにfor ... ofループとif文を単純化しました。

function salesPerBranch(salesPersons) { 
     var myObj = {}; 

     //loop through sales people 
     for (let person of salesPersons) { 
     let branch = person.branch; 

     //test for branches 
     if (!myObj[branch]) { 
      //create branches in the obj 
      myObj[branch] = myObj[branch] 
      //set default value to 0 
      myObj[branch] = 0; 

     } 
     //Add sales for each branch 
     myObj[branch] += convertSalesToInt(person); 

     } 
     console.log(myObj) 

    } 

    salesPerBranch(salesPersons); 
0

これはトリック

salesPersons.map(function(x){return x.branch}).filter(function(value, index, self){return self.indexOf(value) === index;}).forEach(function(x){ 
     console.log(x + ' : $' + salesPersons.filter(function(y){if(y.branch === x) return y}).map(function(z){return z.sales.slice(1)}).reduce(function(a,b){return +a + +b;},0)); 
    }); 
関連する問題