Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Топ пользователей (https://javascript.ru/forum/misc/75720-top-polzovatelejj.html)

Eron 01.11.2018 11:26

Топ пользователей
 
var users = {
	"1": {
		"balance": 300,
		"name": "Юрий"
	},"2": {
		"balance": 399,
		"name": "Юрий"
	},"3": {
		"balance": 3000,
		"name": "Юрий"
	},"4": {
		"balance": 5000,
		"name": "Юрий"
	},"5": {
		"balance": 5001,
		"name": "Юрий"
	},"6": {
		"balance": 5000,
		"name": "Юрий"
	},"7": {
		"balance": 5e9,
		"name": "Юрий"
	}
}

function getTop(base, n){ 
return Object 
.keys(base) 
.sort((a, b) => base[b].balance - base[a].balance) 
.slice(0, n) 
.map(key => " @id" + base[key].id + " (" + base[key].name + ') | Баланс: ' + base[key].balance); 
}

var iduser = 5;
var mestotop;
console.log(getTop(users, 10).join("\n" + "\n \n Твое место в топе: " + mestotop))

Требуется вывести в консоль место в топе юзера с айди 5.

Nexus 01.11.2018 11:39

var func=(function(){
    var users = {
        "1": {
            "balance": 300,
            "name": "Юрий"
        },"2": {
            "balance": 399,
            "name": "Юрий"
        },"3": {
            "balance": 3000,
            "name": "Юрий"
        },"4": {
            "balance": 5000,
            "name": "Юрий"
        },"5": {
            "balance": 5001,
            "name": "Юрий"
        },"6": {
            "balance": 5000,
            "name": "Юрий"
        },"7": {
            "balance": 5e9,
            "name": "Юрий"
        }
    },
	sortedList=Object.keys(users).sort((a,b)=>users[a].balance-users[b].balance);

	return {
		getUserByPosition:function(position){
            return --position in sortedList?users[sortedList[position]]:null;
        },
		getPositionByUserId:function(userId){
			var result=sortedList.indexOf(userId+'');

			return result<0?null:result+1;
		}
	};
})();

console.log(func.getPositionByUserId(5));

SuperZen 01.11.2018 14:30

Тут была ошибка
.map(key => " @id" + key + " (" + base[key].name + ') | Баланс: ' + base[key].balance);

SuperZen 01.11.2018 14:32

.....

Eron 01.11.2018 20:37

var func=(function(){
    var users = {
        "1": {
            "balance": 300,
            "name": "Юрий"
        },"2": {
            "balance": 399,
            "name": "Юрий"
        },"3": {
            "balance": 3000,
            "name": "Юрий"
        },"4": {
            "balance": 5000,
            "name": "Юрий"
        },"5": {
            "balance": 5001,
            "name": "Юрий"
        },"6": {
            "balance": 5000,
            "name": "Юрий"
        },"7": {
            "balance": 5e9,
            "name": "Юрий"
        }
    },
    sortedList=Object.keys(users).sort((a,b)=>users[a].balance-users[b].balance);
 
    return {
        getUserByPosition:function(position){
            return --position in sortedList?users[sortedList[position]]:null;
        },
        getPositionByUserId:function(userId){
            var result=sortedList.indexOf(userId+'');
 
            return result<0?null:result+1;
        }
    };
})();
 
console.log(func.getPositionByUserId(5));


Часовой пояс GMT +3, время: 14:21.