Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как отсортировать object? / 19 сообщений из 19, страница 1 из 1
02.05.2017, 16:34
    #39447451
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
$.getJSON возвращает объект в виде.
Код: javascript
1.
2.
3.
Object {4401: "INTEGRA седан", 4402: "INTEGRA Наклонная задняя часть", 4403: "INTEGRA купе", 4404: "LEGEND", 4405: "LEGEND купе", 4406: "LEGEND II", 
4407: "LEGEND II купе", 4408: "LEGEND III", 4409: "NSX", 4410: "NSX тарга (NA1)", 6092: "MDX (YD1)", 6123: "RL", 6129: "RSX купе (DC_)", 
10059: "MDX (YD2)", 10305: "TSX (CU_)", 10306: "TL (UA8, UA9)", 10307: "RDX", 11379: "ZDX", 12814: "MDX (YD3)", 13181: "TLX"}


Но при получении он сортируется по индексу. А мне нужно отсортировать по названию.
sort() у объекта нет. Т.е. нужно сделать его массивом. А как его сделать массивом в js не в курсе. Подскажите как быть?
...
Рейтинг: 0 / 0
02.05.2017, 16:50
    #39447469
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Или можно как-то сделать, чтобы json не менял сортировку.
...
Рейтинг: 0 / 0
02.05.2017, 17:21
    #39447488
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
...
Рейтинг: 0 / 0
02.05.2017, 21:48
    #39447594
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Спасибо, попробую.
...
Рейтинг: 0 / 0
04.05.2017, 09:36
    #39448381
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Немного не то. Там задается имя. А мне нужен массив [ключ:значение]
...
Рейтинг: 0 / 0
04.05.2017, 10:05
    #39448421
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
объект ключ:значение уже есть, но его нельзя сортировать по значению
...
Рейтинг: 0 / 0
04.05.2017, 11:01
    #39448475
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
vitalukalo$.getJSON возвращает объект в виде.
Код: javascript
1.
2.
3.
Object {4401: "INTEGRA седан", 4402: "INTEGRA Наклонная задняя часть", 4403: "INTEGRA купе", 4404: "LEGEND", 4405: "LEGEND купе", 4406: "LEGEND II", 
4407: "LEGEND II купе", 4408: "LEGEND III", 4409: "NSX", 4410: "NSX тарга (NA1)", 6092: "MDX (YD1)", 6123: "RL", 6129: "RSX купе (DC_)", 
10059: "MDX (YD2)", 10305: "TSX (CU_)", 10306: "TL (UA8, UA9)", 10307: "RDX", 11379: "ZDX", 12814: "MDX (YD3)", 13181: "TLX"}


Но при получении он сортируется по индексу. А мне нужно отсортировать по названию.
sort() у объекта нет. Т.е. нужно сделать его массивом. А как его сделать массивом в js не в курсе. Подскажите как быть?
Как вариант, переделать JSON в массив пока он строка.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
var str='{4401: "INTEGRA седан", 4402: "INTEGRA Наклонная задняя часть", 4403: "INTEGRA купе",'+
	'4404: "LEGEND", 4405: "LEGEND купе", 4406: "LEGEND II", 4407: "LEGEND II купе", 4408: "LEGEND III",'+
	'4409: "NSX", 4410: "NSX тарга (NA1)", 6092: "MDX (YD1)", 6123: "RL", 6129: "RSX купе (DC_)",'+
	'10059: "MDX (YD2)", 10305: "TSX (CU_)", 10306: "TL (UA8, UA9)", 10307: "RDX", 11379: "ZDX",'+
	'12814: "MDX (YD3)", 13181: "TLX"}';
str=str.replace('{','[');
str=str.replace('}',']');
str=str.replace(/(\d+:.+?(?=,|]))/gm,'{$1}');
alert(str);
...
Рейтинг: 0 / 0
04.05.2017, 11:04
    #39448489
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Или так...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
var str='{4401: "INTEGRA седан", 4402: "INTEGRA Наклонная задняя часть", 4403: "INTEGRA купе",'+
	'4404: "LEGEND", 4405: "LEGEND купе", 4406: "LEGEND II", 4407: "LEGEND II купе", 4408: "LEGEND III",'+
	'4409: "NSX", 4410: "NSX тарга (NA1)", 6092: "MDX (YD1)", 6123: "RL", 6129: "RSX купе (DC_)",'+
	'10059: "MDX (YD2)", 10305: "TSX (CU_)", 10306: "TL (UA8, UA9)", 10307: "RDX", 11379: "ZDX",'+
	'12814: "MDX (YD3)", 13181: "TLX"}';
str=str.replace('{','[');
str=str.replace('}',']');
str=str.replace(/(\d+):(.+?)(?=,|])/gm,'{"key": $1, "value": $2}');
alert(str);
...
Рейтинг: 0 / 0
04.05.2017, 11:06
    #39448492
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
vitalukaloобъект ключ:значение уже есть, но его нельзя сортировать по значению

.. наверное, сначала надо создать массив с идентификаторами (терминология обсуждается :) ) прямо в коллбэке getJSON, например

Код: javascript
1.
2.
3.
4.
5.
6.
7.
  var items = [];
$.getJSON( "ajax/test.json", function( data ) {
  $.each( data, function( key, val ) {
    items.push({index: key, description: value} );
  });
 
});


.. а потом уже сортировать его по полю description
...
Рейтинг: 0 / 0
04.05.2017, 11:08
    #39448495
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
.. там везде val, а не value .. или наоборот ..
...
Рейтинг: 0 / 0
04.05.2017, 11:16
    #39448515
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Но ведь -
Код: javascript
1.
2.
3.
{4401: "INTEGRA седан", 4402: "INTEGRA Наклонная задняя часть", 4403: "INTEGRA купе", 4404: "LEGEND", 4405: "LEGEND купе", 4406: "LEGEND II", 
4407: "LEGEND II купе", 4408: "LEGEND III", 4409: "NSX", 4410: "NSX тарга (NA1)", 6092: "MDX (YD1)", 6123: "RL", 6129: "RSX купе (DC_)", 
10059: "MDX (YD2)", 10305: "TSX (CU_)", 10306: "TL (UA8, UA9)", 10307: "RDX", 11379: "ZDX", 12814: "MDX (YD3)", 13181: "TLX"}


объект. Не строка. И причем с символами кириллицы. И как его сделать строкой?
...
Рейтинг: 0 / 0
04.05.2017, 11:22
    #39448521
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
vitalukaloНемного не то. Там задается имя. А мне нужен массив [ключ:значение]Да там вроде правильный пример
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var obj = {4401: "INTEGRA седан", 4402: "INTEGRA Наклонная задняя часть", 4403: "INTEGRA купе", 4404: "LEGEND", 4405: "LEGEND купе", 4406: "LEGEND II", 
4407: "LEGEND II купе", 4408: "LEGEND III", 4409: "NSX", 4410: "NSX тарга (NA1)", 6092: "MDX (YD1)", 6123: "RL", 6129: "RSX купе (DC_)", 
10059: "MDX (YD2)", 10305: "TSX (CU_)", 10306: "TL (UA8, UA9)", 10307: "RDX", 11379: "ZDX", 12814: "MDX (YD3)", 13181: "TLX"};

var arr = Object.keys(obj).map(function(key) {
  return {idx:key, name:obj[key]};
});
arr.sort(function(a,b){
  if (a.name > b.name) {return 1;}
  if (a.name < b.name) {return -1;}
  return 0;});
console.log(JSON.stringify(arr));
...
Рейтинг: 0 / 0
04.05.2017, 11:25
    #39448522
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
vitalukaloобъект. Не строка. И причем с символами кириллицы. И как его сделать строкой?
Получать данные можно и в формате json, а это уже строка.

Либо перевести объект в строку...
http://dnzl.ru/view_post.php?id=350
...
Рейтинг: 0 / 0
04.05.2017, 11:27
    #39448527
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Ступил блин. Спасибо...
...
Рейтинг: 0 / 0
04.05.2017, 11:34
    #39448535
user89
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
vitalukalo,

для регистронезависимого поиска функцию сортировки лучше так записать:
Код: javascript
1.
2.
3.
4.
5.
arr.sort(function(a,b) {
  if (a.name.toUpperCase() > b.name.toUpperCase()) {return 1;}
  if (a.name.toUpperCase() < b.name.toUpperCase()) {return -1;}
  return 0;
});
...
Рейтинг: 0 / 0
04.05.2017, 13:09
    #39448680
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
user89,
В итоге сделал так
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
                           var output = [];

					for (var key in json) {
						output[json[key]] = key;
					}
					
					json = output;
					function sname(i, ii) {
					  if (i[0] > ii[0])
						 return 1;
						 else if (i[0] < ii[0])
						 return -1;
						 else
						 return 0;
					}
					json.sort(sname); 
					
					
					console.log(json);
					
					$model[0].selectize.clearOptions();
					
					for (var ans in json) {
					  $model[0].selectize.addOption({value: json[ans], text: ans});
					}

					
					
					
					$model[0].selectize.refreshOptions();
					$model[0].selectize.enable();


В консоли все отсортировано, а selectize выводит как хочет. Почему? Не понятно
...
Рейтинг: 0 / 0
04.05.2017, 13:18
    #39448698
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
LEGEND II
:
"4406"
LEGEND II купе
:
"4407"
LEGEND III
:
"4408"
LEGEND купе
:
"4405"
MDX (YD1)
:
"6092"
MDX (YD2)
:
"10059"
MDX (YD3)
:
"12814"
NSX
:
"4409"
NSX тарга (NA1)
:
"4410"
RDX
:
"10307"
RL
:
"6123"
RSX купе (DC_)
:
"6129"
TL (UA8, UA9)
:
"10306"
TLX
:
"13181"
TSX (CU_)
:
"10305"
ZDX
:
"11379"
length
:
0
__proto__
:
Array(0)
...
Рейтинг: 0 / 0
04.05.2017, 18:05
    #39448932
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
krvsa,

+100500.
...
Рейтинг: 0 / 0
04.05.2017, 20:56
    #39449010
vitalukalo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отсортировать object?
Спасибо вопрос решил.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как отсортировать object? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]