Υπολογίστε τη μεγαλύτερη αξία μεταξύ αντικειμένων σε διαφορετικές σειρές

ψήφοι
0

Έχω ένα scoreπίνακα που περιέχει δύο αντικείμενα: Liga και Premier . Αυτά τα 2 αντικείμενα είναι μια σειρά από μια λίστα των ομάδων.

Ι ήταν σε θέση να καθορίσει το μεγαλύτερο συμβολοσειρά όταν scoreήταν στο παρελθόν μια ενιαία συστοιχία αντικειμένων.

Αυτή είναι η επίδειξη έχω αναπαράγονται όταν η σύγκριση δουλεύει μια χαρά.

Αυτός είναι ο κώδικας υπολογισμού της υψηλότερης αξίας συγκρίνοντας τα 2 αντικείμενα.

const maxAverage = teams => {
  return teams.map(team => {
      return {
          team:team, 
          avg: getAverage(team)
      }
  }).reduce((a,b)=>a.avg>b.avg?a:b).team
}


<p>Stronger Team:{maxAverage([this.state.homeCity,this.state.awayCity])</p>

Το πρόβλημα τώρα είναι ότι τώρα scoreείναι η σειρά του 2 αντικειμένου, όπως είπα και εγώ προσπαθώ να τροποποιηθεί η λειτουργία μου σε κάτι σαν

const maxAverage = (league, teams) => {
  return teams.map(team => {
      return {
          team:team,
          avg: getAverage(league,team)
      }
  }).reduce((a,b)=>a.avg>b.avg?a:b).team
}

Δεν είμαι σε θέση να περάσει σε λειτουργία μου maxAverageτην παράμετρο ενός από τα δύο πρωταθλήματα που επιλέγονται και στη συνέχεια τα 2 αντικείμενα (ομάδες) θέλω να συγκρίνουν.

Αυτή είναι η άλλη demo που έχω αναπαράγονται με τη σημερινή κατάσταση.

Δημοσιεύθηκε 24/10/2019 στις 11:59
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
-1

Γιατί όχι απλά εκχύλισμα ομάδα, όταν επιλεγεί, εκτός από το κράτος και να χρησιμοποιούν την ίδια μέθοδο που χρησιμοποιείται πριν;

Απαντήθηκε 24/10/2019 στις 12:06
πηγή χρήστη

ψήφοι
0

Δεδομένης της υπογραφής const maxAverage = (league, teams) => ..., παρακάτω κώδικα θα ταιριάζουν με τα αναμενόμενα επιχειρήματα (δεν είναι σίγουρος για την επιχειρηματική λογική και αν):

maxAverage(
  this.state.selectedLeague,
  [this.state.selectedHomeTeam, this.state.selectedAwayTeam]
)
Απαντήθηκε 27/10/2019 στις 11:40
πηγή χρήστη

ψήφοι
0

Τι είναι το πρόβλημα;

const scores = {'liga':[
  { day: "1", Barcelona: 1, Real: 3, Valencia: 0 },
  { day: "2", Barcelona: 4, Real: 6, Valencia: 3 },
  { day: "3", Barcelona: 7, Real: 7, Valencia: 3 },
  { day: "4", Barcelona: 7, Real: 8, Valencia: 6 }
], 'primier':[
  { day: "1", Barcelona: 1, Real: 3, Valencia: 0 },
  { day: "2", Barcelona: 4, Real: 6, Valencia: 3 },
  { day: "3", Barcelona: 7, Real: 7, Valencia: 3 },
  { day: "4", Barcelona: 7, Real: 8, Valencia: 6 }]};
const getAverage = (type, team) => {
  if (isNaN(scores[type][0][team])) return null;

  return scores[type].map(x => x[team]).reduce((a, c) => a + c) / scores[type].length;
};
getAverage('liga',this.state.homeCity);

src: https://codesandbox.io/s/recharts-examples-d9qy0

Απαντήθηκε 27/10/2019 στις 12:06
πηγή χρήστη

ψήφοι
0

Κοίταξα το δεύτερο demo σας και νομίζω ότι έχετε δύο επιλογές για να πάρει τη σωστή ομάδα επέλεξε και μπορείτε να χρησιμοποιήσετε τις παλαιότερες μέθοδο getAverage σας και για τα δύο. Είτε

  const maxAverage = (league, teams) => {
  const currentLeague = [scores][0][league]
  return teams
    .map(team => {
      return {
        team: team,
        avg: getAverage(currentLeague, team)
      };
    })
    .reduce((a, b) => (a.avg > b.avg ? a : b)).team;
};

εναλλακτικά θα μπορούσατε να κρατήσετε το αρχικό κωδικό maxAverage και να αλλάξετε τον τρόπο που εφαρμόζουν την τιμή πρωτάθλημα π.χ..

            <p>           
              Stronger Team:
              {maxAverage(scores[this.state.selectedLeague], [
                this.state.selectedHomeTeam,
                this.state.selectedAwayTeam
              ])}
            </p>
Απαντήθηκε 29/10/2019 στις 13:14
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more