 
			
				09.02.2022, 11:06
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.09.2016 
					
					
					
						Сообщений: 40
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Как отсортировать функцией sort многомерный ассоциативный массив?
			 
			
		
		
		
		пример попытки отсортировать многомерный массив по полю full_time: 
var array = {
  "2685": {
    "deal_title": "Настроить телефонию",
    "COMPANY_ID": "1709",
    "deadline": "",
    "COMPANY_TITLE": "ГК Оптимум",
    "full_time": " - "
  },
  "3531": {
    "deal_title": "CRG Внедрение Битркис24 + Коробка",
    "COMPANY_ID": "2009",
    "deadline": "",
    "COMPANY_TITLE": "ПРОЕКТНЫЙ ИНСТИТУТ \"ГЕОПЛАН\"",
    "full_time": " - "
  },
  "5037": {
    "deal_title": "Приложение для Битрикс24",
    "COMPANY_ID": "2009",
    "deadline": "",
    "COMPANY_TITLE": "ПРОЕКТНЫЙ ИНСТИТУТ \"ГЕОПЛАН\"",
    "full_time": " - "
  },
  "5575": {
    "deal_title": "Базовое внедрение (54)",
    "COMPANY_ID": "1336",
    "deadline": "",
    "COMPANY_TITLE": "ИП Лебедев Максим Андреевич",
    "full_time": " - "
  },
  "6521": {
    "deal_title": "Доработка Битркис24",
    "COMPANY_ID": "1717",
    "deadline": "",
    "COMPANY_TITLE": "АЛЬФА-ГИФТС  ГРУПП",
    "full_time": " - "
  },
  "6551": {
    "deal_title": "Приложение Стоп-работа",
    "COMPANY_ID": "1362",
    "deadline": "",
    "COMPANY_TITLE": "Роско",
    "full_time": " - "
  },
  "6797": {
    "deal_title": "Экспорт остатков по кассам",
    "COMPANY_ID": "1336",
    "deadline": "",
    "COMPANY_TITLE": "ИП Лебедев Максим Андреевич",
    "full_time": " - "
  },
  "10151": {
    "deal_title": "Сопровождение на 2021 год (7 часов в месяц)",
    "COMPANY_ID": "2569",
    "deadline": "",
    "COMPANY_TITLE": "Российское Газовое Общество",
    "full_time": " - "
  },
  "10263": {
    "deal_title": "Купон на УФ (1 год)",
    "COMPANY_ID": "2587",
    "deadline": "",
    "COMPANY_TITLE": "Компас-Р",
    "full_time": " - "
  },
  "10375": {
    "deal_title": "Прием оплат+доработка интеграции",
    "COMPANY_ID": "2191",
    "deadline": "",
    "COMPANY_TITLE": "Комтех",
    "full_time": " - "
  },
  "10749": {
    "deal_title": "Доработки портала (сентябрь)",
    "COMPANY_ID": "1278",
    "deadline": "",
    "COMPANY_TITLE": "ООО \"ТЕРВУД\"",
    "full_time": " - "
  },
  "10835": {
    "deal_title": "Доработки коробки",
    "COMPANY_ID": "3179",
    "deadline": "",
    "COMPANY_TITLE": "ООО \"Много Мебели\"",
    "full_time": " - "
  },
  "10897": {
    "deal_title": "Сопровождение",
    "COMPANY_ID": "3473",
    "deadline": "",
    "COMPANY_TITLE": "ООО \"УПРАВЛЕНЧЕСКИЕ РЕШЕНИЯ\"",
    "full_time": " - "
  },
  "11017": {
    "deal_title": "Техподдержка Битрикс24 с программированием (40 часов)",
    "COMPANY_ID": "2501",
    "deadline": "2022-05-31T03:00:00+03:00",
    "COMPANY_TITLE": "АО «НИИ «ПОЛЮС» ИМ. М.Ф.СТЕЛЬМАХА»",
    "full_time": " - "
  },
  "11183": {
    "deal_title": "Доработки портала (декабрь)",
    "COMPANY_ID": "1278",
    "deadline": "2022-01-13T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"ТЕРВУД\"",
    "full_time": " - "
  },
  "11213": {
    "deal_title": "Техподдержка Битрикс24 с 1 по 30 июня 2021 года",
    "COMPANY_ID": "1362",
    "deadline": "2022-01-31T03:00:00+03:00",
    "COMPANY_TITLE": "Роско",
    "full_time": " - "
  },
  "11227": {
    "deal_title": "ВН",
    "COMPANY_ID": "52701",
    "deadline": "2022-01-20T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"РУССКИЙ ТУР\"",
    "full_time": " - "
  },
  "11235": {
    "deal_title": "Доработка способов оплаты в приложении \"Выбор услуг\"",
    "COMPANY_ID": "2335",
    "deadline": "2022-01-31T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"МОСУСТАНОВКА\"",
    "full_time": " - "
  },
  "11321": {
    "deal_title": "Разработка ТЗ на приложение для Битрикс24",
    "COMPANY_ID": "55227",
    "deadline": "2022-02-16T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"АКРИТ-СЕРВИС\"",
    "full_time": " - "
  },
  "11331": {
    "deal_title": "Техподдержка Битрикс24 с 1 по 30 июня 2021 года",
    "COMPANY_ID": "1362",
    "deadline": "2022-02-28T03:00:00+03:00",
    "COMPANY_TITLE": "Роско",
    "full_time": " - "
  },
  "11345": {
    "deal_title": "тест 1",
    "COMPANY_ID": "55233",
    "deadline": "2022-02-10T03:00:00+03:00",
    "COMPANY_TITLE": "Тест Роман",
    "task_id": "29191",
    "task_name": "Получить платёж на сумму 1 руб. по статье \"Не заполнено\"",
    "begin_time": "2022-02-07T12:16:45+03:00",
    "comment": "тест",
    "full_time": 56699208
  },
  "11365": {
    "deal_title": "тест 2",
    "COMPANY_ID": "55235",
    "deadline": "2022-02-07T03:00:00+03:00",
    "COMPANY_TITLE": "тест Роман 2",
    "task_id": "29187",
    "task_name": "Получить платёж на сумму 1 руб. по статье \"Не заполнено\"",
    "begin_time": "2022-02-07T12:16:12+03:00",
    "full_time": -202500792
  },
  "11391": {
    "deal_title": "тестовая сделка 3",
    "COMPANY_ID": "55241",
    "deadline": "2022-02-09T03:00:00+03:00",
    "COMPANY_TITLE": "тест Роман 3",
    "task_id": "29183",
    "task_name": "Получить платёж на сумму 1 руб. по статье \"Не заполнено\"",
    "begin_time": "2022-02-07T12:15:24+03:00",
    "full_time": -29700793
  }
}
function compare(a, b) {
     return a.full_time - b.full_time;
}
array.sort(compare);
console.log('array');
console.log(array);
выводит ошибку: Uncaught TypeError: array.sort is not a function 
почему не сортирует и как исправить?  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.02.2022, 11:21
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 raja, 
 объекты не сортируются, сортируются массивы!!! 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.02.2022, 11:24
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.09.2016 
					
					
					
						Сообщений: 40
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 а как тогда создать ассоциативный многомерный массив вместо объекта? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.02.2022, 11:41
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Потому, что array у Вас не массив, а объект. 
Массивы задаются в квадратных скобках [] 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.02.2022, 11:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от raja
			
		
	 | 
 
	| 
		а как тогда создать ассоциативный
	 | 
 
	
 
 В js нет ассоциативных массивов.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.02.2022, 11:45
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 03.02.2020 
					
					
					
						Сообщений: 2,777
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 a.full_time - b.full_time; 
У вас full_time то строка, то число. Их нельзя вычетать. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.02.2022, 12:15
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от voraa
			
		
	 | 
 
	| 
		У вас full_time то строка, то число. Их нельзя вычетать.
	 | 
 
	
 
 Само действие возможно. Но результат бывает "интересный"...   
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.02.2022, 12:19
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 CacheVar 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 19.08.2010 
					
					
					
						Сообщений: 14,298
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от raja
			
		
	 | 
 
	| 
		почему не сортирует и как исправить?
	 | 
 
	
 
 Про "почему" тебе уже написали... 
Теперь про "как исправить".
 
Ты можешь работать с самой последовательностью ключей.
 
Object.keys()
 
Вернет тебе сам список ключей и это уже будет массив.   
Изменить его и "переставить местами" элементы, опираясь на данные в объекте, уже выполнимая задача.
 
Этот массив может быть кагбэ индексом (в понимании СУБД) для перебора данных объекта в нужном порядке.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.02.2022, 14:07
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 04.12.2012 
					
					
					
						Сообщений: 3,841
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var array = {
  "2685": {
    "deal_title": "Настроить телефонию",
    "COMPANY_ID": "1709",
    "deadline": "",
    "COMPANY_TITLE": "ГК Оптимум",
    "full_time": " - "
  },
  "3531": {
    "deal_title": "CRG Внедрение Битркис24 + Коробка",
    "COMPANY_ID": "2009",
    "deadline": "",
    "COMPANY_TITLE": "ПРОЕКТНЫЙ ИНСТИТУТ \"ГЕОПЛАН\"",
    "full_time": " - "
  },
  "5037": {
    "deal_title": "Приложение для Битрикс24",
    "COMPANY_ID": "2009",
    "deadline": "",
    "COMPANY_TITLE": "ПРОЕКТНЫЙ ИНСТИТУТ \"ГЕОПЛАН\"",
    "full_time": " - "
  },
  "5575": {
    "deal_title": "Базовое внедрение (54)",
    "COMPANY_ID": "1336",
    "deadline": "",
    "COMPANY_TITLE": "ИП Лебедев Максим Андреевич",
    "full_time": " - "
  },
  "6521": {
    "deal_title": "Доработка Битркис24",
    "COMPANY_ID": "1717",
    "deadline": "",
    "COMPANY_TITLE": "АЛЬФА-ГИФТС  ГРУПП",
    "full_time": " - "
  },
  "6551": {
    "deal_title": "Приложение Стоп-работа",
    "COMPANY_ID": "1362",
    "deadline": "",
    "COMPANY_TITLE": "Роско",
    "full_time": " - "
  },
  "6797": {
    "deal_title": "Экспорт остатков по кассам",
    "COMPANY_ID": "1336",
    "deadline": "",
    "COMPANY_TITLE": "ИП Лебедев Максим Андреевич",
    "full_time": " - "
  },
  "10151": {
    "deal_title": "Сопровождение на 2021 год (7 часов в месяц)",
    "COMPANY_ID": "2569",
    "deadline": "",
    "COMPANY_TITLE": "Российское Газовое Общество",
    "full_time": " - "
  },
  "10263": {
    "deal_title": "Купон на УФ (1 год)",
    "COMPANY_ID": "2587",
    "deadline": "",
    "COMPANY_TITLE": "Компас-Р",
    "full_time": " - "
  },
  "10375": {
    "deal_title": "Прием оплат+доработка интеграции",
    "COMPANY_ID": "2191",
    "deadline": "",
    "COMPANY_TITLE": "Комтех",
    "full_time": " - "
  },
  "10749": {
    "deal_title": "Доработки портала (сентябрь)",
    "COMPANY_ID": "1278",
    "deadline": "",
    "COMPANY_TITLE": "ООО \"ТЕРВУД\"",
    "full_time": " - "
  },
  "10835": {
    "deal_title": "Доработки коробки",
    "COMPANY_ID": "3179",
    "deadline": "",
    "COMPANY_TITLE": "ООО \"Много Мебели\"",
    "full_time": " - "
  },
  "10897": {
    "deal_title": "Сопровождение",
    "COMPANY_ID": "3473",
    "deadline": "",
    "COMPANY_TITLE": "ООО \"УПРАВЛЕНЧЕСКИЕ РЕШЕНИЯ\"",
    "full_time": " - "
  },
  "11017": {
    "deal_title": "Техподдержка Битрикс24 с программированием (40 часов)",
    "COMPANY_ID": "2501",
    "deadline": "2022-05-31T03:00:00+03:00",
    "COMPANY_TITLE": "АО «НИИ «ПОЛЮС» ИМ. М.Ф.СТЕЛЬМАХА»",
    "full_time": " - "
  },
  "11183": {
    "deal_title": "Доработки портала (декабрь)",
    "COMPANY_ID": "1278",
    "deadline": "2022-01-13T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"ТЕРВУД\"",
    "full_time": " - "
  },
  "11213": {
    "deal_title": "Техподдержка Битрикс24 с 1 по 30 июня 2021 года",
    "COMPANY_ID": "1362",
    "deadline": "2022-01-31T03:00:00+03:00",
    "COMPANY_TITLE": "Роско",
    "full_time": " - "
  },
  "11227": {
    "deal_title": "ВН",
    "COMPANY_ID": "52701",
    "deadline": "2022-01-20T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"РУССКИЙ ТУР\"",
    "full_time": " - "
  },
  "11235": {
    "deal_title": "Доработка способов оплаты в приложении \"Выбор услуг\"",
    "COMPANY_ID": "2335",
    "deadline": "2022-01-31T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"МОСУСТАНОВКА\"",
    "full_time": " - "
  },
  "11321": {
    "deal_title": "Разработка ТЗ на приложение для Битрикс24",
    "COMPANY_ID": "55227",
    "deadline": "2022-02-16T03:00:00+03:00",
    "COMPANY_TITLE": "ООО \"АКРИТ-СЕРВИС\"",
    "full_time": " - "
  },
  "11331": {
    "deal_title": "Техподдержка Битрикс24 с 1 по 30 июня 2021 года",
    "COMPANY_ID": "1362",
    "deadline": "2022-02-28T03:00:00+03:00",
    "COMPANY_TITLE": "Роско",
    "full_time": " - "
  },
  "11345": {
    "deal_title": "тест 1",
    "COMPANY_ID": "55233",
    "deadline": "2022-02-10T03:00:00+03:00",
    "COMPANY_TITLE": "Тест Роман",
    "task_id": "29191",
    "task_name": "Получить платёж на сумму 1 руб. по статье \"Не заполнено\"",
    "begin_time": "2022-02-07T12:16:45+03:00",
    "comment": "тест",
    "full_time": 56699208
  },
  "11365": {
    "deal_title": "тест 2",
    "COMPANY_ID": "55235",
    "deadline": "2022-02-07T03:00:00+03:00",
    "COMPANY_TITLE": "тест Роман 2",
    "task_id": "29187",
    "task_name": "Получить платёж на сумму 1 руб. по статье \"Не заполнено\"",
    "begin_time": "2022-02-07T12:16:12+03:00",
    "full_time": -202500792
  },
  "11391": {
    "deal_title": "тестовая сделка 3",
    "COMPANY_ID": "55241",
    "deadline": "2022-02-09T03:00:00+03:00",
    "COMPANY_TITLE": "тест Роман 3",
    "task_id": "29183",
    "task_name": "Получить платёж на сумму 1 руб. по статье \"Не заполнено\"",
    "begin_time": "2022-02-07T12:15:24+03:00",
    "full_time": -29700793
  }
}
var sortedArray = Object.values(array).sort((a, b) => {
    const [first, second] = [a, b].map(({full_time: value}) => {
        if (typeof value === 'string' && value.includes('-')) {
            return 0;
        }
        
        return value;
    });
    
    return first - second;
});
console.log(sortedArray);
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 
 
 
 
	 | 
 
 
 |