Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сортировка по внутреннему элементу (https://javascript.ru/forum/misc/64321-sortirovka-po-vnutrennemu-ehlementu.html)

warren buffet 03.08.2016 12:08

В будущем когда source.assign(target) получит законную силу, перепишешь свой скрипт на одну строку

messages.assign(json);

https://developer.mozilla.org/ru/doc.../Object/assign

warren buffet 03.08.2016 12:10

Вложений: 1
рони, не надо картинок постить, у меня с двача лягушек на мегабайт.

warren buffet 03.08.2016 12:12

Цитата:

Сообщение от KupueIIIKo
sort(compareNumeric)

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

KupueIIIKo 03.08.2016 12:28

function getMessages(){
	if(messages.length===0){
		$.ajax({
			type: 'post',
			data: 'getMessages',
			cache: false,
			dataType: 'json',
			success: function(answer){
				pushMessages(answer);
			},
		});
	}else{
		//Если не первая загрузка добавляем в ajax новую переменную.
	}
}
function pushMessages(answer){
	for(var i=0;i<answer.length;i++){
		messages[answer[i].id] = new Object();
		messages[answer[i].id].text = answer[i].text;
		messages[answer[i].id].time = answer[i].time;
		messages[answer[i].id].sender = answer[i].sender;
	}
	updateMessages();
}

Я думаю пойдет для начала)

warren buffet 03.08.2016 12:36

Для начала посмотри, что получается, если переписать твою пушнину нормальным языком

function pushMessages(data){

	var row;

	for(var i=0;i<data.length;i++){
	
		row=data[i];
	
		messages[row.id] = {
			
			id:row.id,
			text:row.text,
			time:row.time,
			text:sender.sender,
		
		}
		
	}
	
}


То есть это не все, просто я хочу чтобы ты сам допер, как все просто.

warren buffet 03.08.2016 12:39

То есть, если в answer нет ничего лишнего или оно не помешает, то пушнина вырождается в

function pushMessages(data){

	for(var i=0;i<data.length;i++)
		messages[data[i].id] = data[i];
	
}


Сравни код выше с тем, который я постил от балды и найди отличия. ))) И все что тебе не хватает - это id сразу в выдаче с сервера, о чем я сразу же на капу и нажал.

KupueIIIKo 03.08.2016 12:43

Цитата:

Сообщение от warren buffet (Сообщение 424212)
Для начала посмотри, что получается, если переписать твою пушнину нормальным языком

function pushMessages(data){

	var row;

	for(var i=0;i<data.length;i++){
	
		row=data[i];
	
		messages[row.id] = {
			
			id:row.id,
			text:row.text,
			time:row.time,
			text:sender.sender,
		
		}
		
	}
	
}


То есть это не все, просто я хочу чтобы ты сам допер, как все просто.

стиль написания не важен главное работоспособность) ну если тока сэкономить сотню байт при передаче данных

KupueIIIKo 03.08.2016 12:44

Цитата:

Сообщение от warren buffet (Сообщение 424213)
То есть, если в answer нет ничего лишнего или оно не помешает, то пушнина вырождается в

function pushMessages(data){

	for(var i=0;i<data.length;i++)
		messages[data[i].id] = data[i];
	
}


Сравни код выше с тем, который я постил от балды и найди отличия. ))) И все что тебе не хватает - это id сразу в выдаче с сервера, о чем я сразу же на капу и нажал.

тут у тебя id дублируется 2 раза)

warren buffet 03.08.2016 12:45

Допустим ты отрендерил ленту по полученным данным и пришли новые. Так ты просто заменяй messages на answer, то есть в калбеке аякса messages = answer и сразу на рендер.

warren buffet 03.08.2016 12:47

Цитата:

Сообщение от KupueIIIKo
тут у тебя id дублируется 2 раза)

То есть твой баттхерт выдал взаимоисключающие параграфы в пределах одной страницы форума:

Цитата:

Сообщение от KupueIIIKo
ну если тока сэкономить сотню байт при передаче данных

Вот теперь иди проси рони исправить твои колхозные коды. Я с "питекантропами" не общаюсь.


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