2017-09-15 254 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 
} 

我在哪裏停留,現在只有一部分是我加的總銷售額,每個分支的一部分。現在它沒有提高適量。這部分負責:

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

任何人誰知道我的錯誤,我該如何解決它?

謝謝!

回答

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是嗎?它只是一個表達式被返回?我習慣於看到2個表達式與三元運算符 –

+1

this'myObj [splitTeam] = myObj [splitTeam]?myObj [splitTeam]:0;'等於'if(myObj [splitTeam]){myObj [splitTeam] = myObj [splitTeam]} else {myObj [splitTeam] = 0}我們在第一次添加一個對象時,這個值將會被取消查找,所以我將它設置爲0,如果值存在,然後再加上那個值 – Durga

+0

另外還有一件事,對象知道自己跳過重複嗎?數組中,他有對象具有重複的屬性。對象只是略過,只有獨特的屬性?感謝alp的解釋。 –

1

這是另一種略有不同的方式,靈感來自於杜爾加的回答。我使用for ...循環和簡化的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)); 
    });