Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.07.2022, 21:45
Интересующийся
Отправить личное сообщение для Sice Посмотреть профиль Найти все сообщения от Sice
 
Регистрация: 16.06.2014
Сообщений: 23

Как отсортировать массив по свойствам ? ("ассоциативный массив")
Добрый день. У меня есть Массив, в который я добавляю элементы таким образом:
TickersArray = []
TickersArray[ticker] = spread_5m;

Где в цикле меняется: ticker как строковая переменная, spread_5m - float. Получаю в консоли такой вывод:



Я хочу отсортировать теперь этот массив по свойствам (значению) в порядке убывания с сохранением ключей, разумеется. Подскажите пожалуйста как это сделать. Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 01.07.2022, 21:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Sice
Подскажите пожалуйста как это сделать.
лучше этого никогда не делать ... сделайте нормальный массив и сортируйте как хотите.
Ответить с цитированием
  #3 (permalink)  
Старый 02.07.2022, 08:50
Интересующийся
Отправить личное сообщение для Sice Посмотреть профиль Найти все сообщения от Sice
 
Регистрация: 16.06.2014
Сообщений: 23

Сообщение от рони Посмотреть сообщение
лучше этого никогда не делать ... сделайте нормальный массив и сортируйте как хотите.
Можете пожалуйста показать пример, как лучше добавлять элементы в массив и правильно его отсортировывать в моём случае ? Спасибо.
Ответить с цитированием
  #4 (permalink)  
Старый 02.07.2022, 09:31
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,692

Например, так

TickersArray = [];
// Добавление
TickersArray.push({ticker:ticker, value:spread_5m});
// Сортировка
TickersArray.sort ((x,y) => x.value - y.value))


Но все зависит и от того, какие операции вы еще делаете с этим набором.
В js нет ассоциированных массивов. Массивы только с числовыми индексами.
Для хранения информации в виде <строковый ключ> -> <значение> можно использовать объекты или Map. Но их нельзя сортировать.

Если нужен частый доступ к элементам по ticker, то может быть лучше использовать объект или Map, а для сортировки временно преобразовывать их в массив и сортировать.

Например так
Tickers = {};
// Добавление
Tickers[ticker] = spread_5m;
// Сортировка
TickersSortArray = Object.entries(Tickers).sort ((x,y) => x[1] - y[1]))

[/JS]
TickersSortArray - будет массивом, где каждый элемент - массив из 2 элементов. Первый (с индексом 0) - строковое значение вашего ticker, второй (с индексом 1) - числовое значение (ваш spread_5m)

Последний раз редактировалось voraa, 02.07.2022 в 09:46.
Ответить с цитированием
  #5 (permalink)  
Старый 02.07.2022, 09:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

voraa,
Ответить с цитированием
  #6 (permalink)  
Старый 02.07.2022, 17:50
Интересующийся
Отправить личное сообщение для Sice Посмотреть профиль Найти все сообщения от Sice
 
Регистрация: 16.06.2014
Сообщений: 23

Сообщение от voraa Посмотреть сообщение
Например, так

TickersArray = [];
// Добавление
TickersArray.push({ticker:ticker, value:spread_5m});
// Сортировка
TickersArray.sort ((x,y) => x.value - y.value))


Но все зависит и от того, какие операции вы еще делаете с этим набором.
В js нет ассоциированных массивов. Массивы только с числовыми индексами.
Для хранения информации в виде <строковый ключ> -> <значение> можно использовать объекты или Map. Но их нельзя сортировать.

Если нужен частый доступ к элементам по ticker, то может быть лучше использовать объект или Map, а для сортировки временно преобразовывать их в массив и сортировать.

Например так
Tickers = {};
// Добавление
Tickers[ticker] = spread_5m;
// Сортировка
TickersSortArray = Object.entries(Tickers).sort ((x,y) => x[1] - y[1]))

[/JS]
TickersSortArray - будет массивом, где каждый элемент - массив из 2 элементов. Первый (с индексом 0) - строковое значение вашего ticker, второй (с индексом 1) - числовое значение (ваш spread_5m)
Супер! Спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильно формировать многомерный массив? raja Общие вопросы Javascript 5 25.02.2022 14:02
Как отсортировать функцией sort многомерный ассоциативный массив? raja Общие вопросы Javascript 8 10.02.2022 14:07
Как добавить данные в глобальный массив из функции Jigan2 jQuery 2 14.03.2015 18:06
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 13:29
Как лучше сделать глобальный массив skyfish AJAX и COMET 4 17.02.2009 18:05