Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] Hoe kolom met .map() toevoegen aan array?

Pagina: 1
Acties:

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
In het verleden heb ik met behulp van Array.map() extra informatie kunnen toevoegen aan een dataset die ik via json/ajax binnenkreeg, zie dit jsfiddle voorbeeld.

De data die ik binnenkrijg is echter qua opzet veranderd. Daar waar ik eerst de structuur als:
JavaScript:
1
{keys:["team_name", "team_totalscore", "current_rndpos", "team_round", "previous_rndscore", "previous_rndpos"], data:[["De Woudlopers", "342", 628, "speelronde 12", "285", 588]]}


komt de data nu als volgt binnen:
JavaScript:
1
[{"team_name":"Bramwich City","team_round":"speelronde 30","current_rndscore":814,"previous_rndscore":792},{"team_name":"MASTER PLAYER","team_round":"speelronde 30","current_rndscore":848,"previous_rndscore":826},{"team_name":"Don_Diego","team_round":"speelronde 30","current_rndscore":698,"previous_rndscore":684},{"team_name":"Wambaboys","team_round":"speelronde 30","current_rndscore":858,"previous_rndscore":830},


De ontvangen data moest echter nog verrijkt worden met extra informatie. Hierdoor werd gebruik gemaakt van de Array.Map() functie zoals je kan zien in het onderstaande voorbeeld:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
var data = scores.data;
// Sort on previous rank
var sorted = data.sort(function(a, b) {
    return b[4] - a[4];
});

// Add extra column
var extraColumn = sorted.map(function(arrayRow,index) {
    arrayRow[arrayRow.length] = index + 1;
    return arrayRow;
});


Helaas werkt deze oplossing niet meer met de nieuwe wijze waarop ik de data ontvang en moet verwerken. Wie kan mij aangeven hoe ik deze data alsnog op de juiste wijze kan verwerken?

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Wat werkt er niet? Wat doet de functie met je output, en welke output verwacht je?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Grijze Vos schreef op woensdag 02 april 2014 @ 08:57:
Wat werkt er niet? Wat doet de functie met je output, en welke output verwacht je?
Deze functie moet ervoor zorgen dat er een extra kolom wordt toegevoegd aan de array met een indexwaarde van de volgorde. Dus initieel heb ik de volgende array (even kleiner en duidelijker gemaakt):

JavaScript:
1
2
3
4
5
6
7
8
[
    { "Naam"   : "Foo", 
      "Punten" : 234
    }, 
    { "Naam"   : "Bar",
      "Punten" : 255
    }
]


Vervolgens wordt er met behulp van array.map() een extra kolom toegevoegd aan de array nadat er een sortering gedaan is wat het volgende resultaat moet geven:

JavaScript:
1
2
3
4
5
6
7
8
9
10
[
    { "Naam"    : "Bar", 
      "Punten"  : 255, 
      "Ranking" : 1
    }, 
    { "Naam"    : "Foo",
      "Punten"  : 234,
      "Ranking" : 2
    }
]


Omdat de data (was: {keys:["key1", "key2"], data: [["value1", 12], ["value2", 34]]} en is nu: [{"key1" : "value1", "key2" : "12"}, {"key1" : "value2", "key2" : 34}] ) nu anders wordt ontvangen blijkt dit proces niet meer te werken.

  • storeman
  • Registratie: April 2004
  • Laatst online: 12:00
Je map functie werkt nog met arrays, terwijl je objecten gebruikt. Daar gaat het fout.

code:
1
2
3
var myObj = {'key':'value'};
myObj['newKey'] = 'newValue';
myObj.anotherKey = 'anotherValue';

"Chaos kan niet uit de hand lopen"