Задать вопрос

Как отсортировать объект?

Занялся написанием расширения для браузера. kango, requirejs, underscore, jquery. Решил попробовать. И столкнулся с написанием "модуля" который отслеживает изменения уровней игроков исходя из странички с логами этих изменений.

Спарсили страничку истории изменения уровней у игроков. Сверху - новые изменения. Вытащить из объекта obj1 только отслеживаемые объекты из "масива" nicks причем только первое их вхождение. (Так как самые новые обновления сверху - то что после первого вхождения уже устарело)

var nicks = ['A', 'B', 'C'];

var obj1 = {
	0: {nick: 'A', lvl: 2} //Первый раз встретился ник А
	1: {nick: 'B', lvl: 3} //Первый раз встретился ник B
	2: {nick: 'B', lvl: 10}
	3: {nick: 'A', lvl: 12}
	3: {nick: 'С', lvl: 5}
	3: {nick: 'F', lvl: 1}
	4: {nick: 'C', lvl: 6} //Первый раз встретился ник C
	3: {nick: 'G', lvl: 55}
}


После чего получаем резульат сортировки(должно получить на выходе):

obj2 = {
	0: {nick: 'A', lvl: 2}
	1: {nick: 'B', lvl: 3}
	2: {nick: 'C', lvl: 6}
}


После чего нужно проверить старые значения с новыми.
Берем obj3 и проверяем. Если у ника изменился уровень(из obj2) сравнительно с obj3 - обновить значение в obj2 и выдать сообщение в консоль (У ника C уровень стал ниже (5))
var obj3 = {
	0: {nick: 'A', lvl: 3}
	1: {nick: 'C', lvl: 1}
}


Как все это реализовать я не могу сообразить. Именно по части логики. В распоряжении underscore и jquery
  • Вопрос задан
  • 2230 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
kentilini
@kentilini
В продакшн
Вот так можно пройти по всем элементам JSON 1го уровня. А уже у них спрашивать значение поля nick, lvl и прочих.
for (var key in obj1) {
  if (obj1.hasOwnProperty(key)) {
    alert(key + " -> " + obj1[key].nick);
  }
}


Но зачем вам такой подход? Почему не хранить все в виде массива JSONов, тогда не будет путаницы с порядком и пр.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы