dev.to staff

Posted on

# Daily Challenge #295 - Sort Leaderboards

In this challenge, you'll be given a leaderboard in the form of an array, as well as a list of strings. Using the information in the list, sort the leaderboard.

### Example

array:

``````['John',
'Brian',
'Jim',
'Dave',
'Fred']
``````

list:
`['Dave +1', 'Fred +4', 'Brian -1']`

The steps for our example would be:

``````# Dave up 1
['John',
'Brian',
'Dave',
'Jim',
'Fred']
# Fred up 4
['Fred',
'John',
'Brian',
'Dave',
'Jim']
# Brian down 1
['Fred',
'John',
'Dave',
'Brian',
'Jim']
``````

Then, we return the completed leaderboard:

``````['Fred',
'John',
'Dave',
'Brian',
'Jim']
``````

Strings will never ask you to move a name higher or lower than possible. The strings in the list will always be a name in the leaderboard, followed by a space and a positive or negative number.

### Tests

`leaderboardSort(['John', 'Brian', 'Jim', 'Dave', 'Fred'], ['Dave +1', 'Fred +4', 'Brian -1'])`
`leaderboardSort(['Bob', 'Larry', 'Kevin', 'Jack', 'Max'], ['Max +3', 'Kevin -1', 'Kevin +3'])`

Good luck!

This challenge comes from topping on CodeWars. Thank you to CodeWars, who has licensed redistribution of this challenge under the 2-Clause BSD License!

Want to propose a challenge idea for a future post? Email yo+challenge@dev.to with your suggestions!

''

JS

``````const leaderboardSort = (list, stepList) =>
{
stepList.forEach(stepInfo => {
let [name, step] = stepInfo.split(" ")
step = +step
const nameIndex = list.indexOf(name)
list.splice(nameIndex,1)
list.splice(nameIndex-step,0,name)
})
return list
}
``````

Caleb Rudder • Edited

Javascript!

``````function leaderboardSort(leaderBoard, moveList){
moveList.forEach(element => {
let moveInfo = element.split(' ');
let player = moveInfo[0];
let moveAmmount = moveInfo[1];
let newIndex = currentIndex - moveAmmount;

if(newIndex < currentIndex){
for(let i = currentIndex; i > newIndex; i--){
}