2017-09-15 7 views
0

Ich erstellte eine Funktion, die ein Objekt ohne doppelte Verzweigung und den Gesamtumsatz pro Zweig zurückgibt.Erhalten Sie den Gesamtumsatz

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 } */ 

Die Antwort sollte wie folgt aussehen:

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

Der einzige Teil, wo ich stecke gerade jetzt ist der Teil, wo ich den Gesamtumsatz für jeden Zweig hinzuzufügen. Im Moment ist es nicht die richtige Menge. Dieser Teil ist dafür verantwortlich:

Wer weiß, was meine Fehler und wie kann ich es beheben?

Danke!

Antwort

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));

Sie müssen überprüfen, ob Sie es nicht Verkäufe Zähldaten haben dann Null machen, wenn Sie dann, um es hinzuzufügen haben.

+0

Hallo den Trick zu tun, versuche ich, einen Teil Ihrer Antwort zu verstehen, weil ich mit Objekten schwach bin. Für diese Zeile lautet "myObj [splitTeam] = myObj [splitTeam]? MyObj [splitTeam]: 0;" ; Ist das äquivalent zu "if (myObj [splitTeam]) return myObj [splitTeam]: 0 right? Wird nur ein Ausdruck zurückgegeben? Ich bin es gewohnt, 2 Ausdrücke mit ternären Operatoren zu sehen. –

+1

this'myObj [splitTeam] = myObj [splitTeam]? myObj [splitTeam]: 0; 'ist gleich zu 'if (myObj [splitTeam]) {myObj [splitTeam] = meinObj [splitTeam]} else {myObj [splitTeam] = 0}', dies, weil, wenn Wir fügen ein Objekt zum ersten Mal hinzu, der Wert wird undefiniert sein, also setze ich ihn auf 0, wenn der Wert da ist, dann füge ich diesen Wert hinzu – Durga

+0

Auch noch eine Sache, weiß das Objekt, Duplikate von selbst zu überspringen? Array, hat er Objekte mit doppelten Eigenschaften.Hintet das Objekt nur das und nur einzigartige Eigenschaften? Vielen Dank für die Erklärung. –

1

Hier ist ein anderer, etwas anderer Weg, inspiriert von @ Durgas Antwort. Ich benutzte die for ... of loop und eine vereinfachte if-Anweisung, um seine Antwort zu verstehen.

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

Dies sollte

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)); 
    }); 
Verwandte Themen