suchen

Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Suchen Sie nach der elegantesten Möglichkeit, Daten zu verarbeiten?

Angesichts des Endorsement-Arrays müssen wir eine Funktion schreiben, um das gewünschte Ausgabeergebnis zu erzielen:

// function input 
var endorsements = [ 
{ skill: 'javascript', user: 'Chad' }, 
{ skill: 'javascript', user: 'Bill' }, 
{ skill: 'javascript', user: 'Sue' }, 
{ skill: 'html', user: 'Sue' }, 
{ skill: 'css', user: 'Sue' }, 
{ skill: 'css', user: 'Bill' } 
]; 

// function output 
[ 
{ skill: 'javascript', user: [ 'Chad', 'Bill', 'Sue' ], count: 3 }, 
{ skill: 'css', user: [ 'Sue', 'Bill' ], count: 2 }, 
{ skill: 'html', user: [ 'Sue' ], count: 1 } 
];
PHPzPHPz2752 Tage vor454

Antworte allen(1)Ich werde antworten

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-19 10:25:13

    let output = []
    
    endorsements.reduce((dict, item) => {
      if (!dict[item.skill]) {
        dict[item.skill] = {
          skill: item.skill,
          user: [item.user],
          count: 1
        }
        output.push(dict[item.skill])
      } else {
        dict[item.skill].user.push(item.user)
        dict[item.skill].count += 1
      }
      return dict
    }, {})
    
    output = output.sort((a, b) => b.count - a.count)
    
    console.log(output)

    Antwort
    0
  • StornierenAntwort